PHP 7 Apache 2.4 fastcgi mod_fcgid配置方法

PHP 7能夠做爲Apache模塊安裝運行,也能夠做爲CGI程序運行,做爲CGI程序安裝運行時,不須要php5apache2_2.dll或者 php5apache2_4.dll,下載非線安全版的PHP7便可,這樣可讓PHP同時支持Apache和Nginx等多個服務器軟件,非線程安全版 即NTS版。

PHP7做爲Apache模塊安裝時不能和VC 九、VC10或者VC11的Apache一塊兒運行,以fastcgi形式安裝不受此限,前提是須要安裝相應的VC運行庫

首先下載PHP 7和Apache 2.4,解壓。

下載mod_fcgid,而後將下載得的mod_fcgid.so文件複製到Apache的modules目錄

而後在httpd.conf文件中添加如下內容。

注意事項:
php

  • PHP安裝路徑若是包含空格,須要在每一個空格前加一個\符號,html

  • 路徑中的非英文字符時必須轉碼爲utf-8,mysql

  • 原則上建議路徑不要包含空格或中文字符。sql

  • 請將如下配置中的路徑修改成你電腦上面正確的路徑。
    apache



LoadModule fcgid_module modules/mod_fcgid.so

<IfModule fcgid_module>
        FcgidInitialEnv PHPRC "F:/Web/PHPServer/Bin/PHP"
        FcgidInitialEnv PHP_FCGI_MAX_REQUESTS      1000
        FcgidMaxRequestsPerProcess       1000
        FcgidMaxProcesses             15
        FcgidIOTimeout             120
        FcgidIdleTimeout                120
        AddType application/x-httpd-php .php
        <Files ~ "\.php$>"
          AddHandler fcgid-script .php
          FcgidWrapper "F:/Web/PHPServer/Bin/PHP/php-cgi.exe" .php
        </Files>
</IfModule>

爲站點根目錄的Options增長ExecCGI,假設根目錄是F:/Web/www

<Directory "F:/Web/www">
        AllowOverride All
        Options -Indexes +ExecCGI
</Directory>

其餘配置項略。常常出現的錯誤及解決方案:

Apache 以fastcgi mod_fcgid方式PHP時出現 Wrapper D:/Program cannot be accessed: (720002)\xcf\xb5\xcd\xb3\xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xce\xc4\xbc\xfe\xa1\xa3 是由於PHP的安裝路徑中包含空格,如D:\Program Files\PHPServer\Bin\PHP,這是Apache fastcgi mod_fcgid的一個Bug,只要將PHP安裝到一個路徑沒有空格的目錄便可,如F:\Web\PHPServer\Bin\PHP,也能夠在每一個空 格前加反斜線\,如"C:\Program\ Files\php\php-cgi.exe",若是路徑包含中文字符等非英文字符,那麼必須將配置文件轉碼爲utf-8,不然也會出錯。詳見:Apache facgid FcgidWrapper Wrapper cannot be accessed.

Apache mod_fcgid: get overlap result error 多半是PHP擴展加載有誤,有多是新版PHP再也不支持某些擴展,如MySQL擴展庫,但卻在ini文件時面加載了這些擴展,出現這樣的狀況,只須要雙擊 PHP安裝目錄下面的php.exe,若是有錯誤,會自動彈出信息提示錯誤,按照提示將錯誤改正便可。好比以前說的在php.ini裏面加載了不支持的擴 展,那麼就會報錯:PHP Warning: PHP Startup: Unable to load dynamic library '..../php_mysql.dll' - 找不到指定的模塊 in unknown on line 0,那麼就在php.ini中在 extension=php_mysql.dll 前面加個英文狀態的分號,或者直接刪除這一行,這是由於PHP7不支持mysql擴展,原來的mysql_*系列函數再也不可用。

若是沒有增長ExcecCGI,將會出現403錯誤,即沒有權限訪問。安全

相關文章
相關標籤/搜索