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 9、VC10或者VC11的Apache一起运行,以fastcgi形式安装不受此限,前提是需要安装相应的VC运行库。

首先下载PHP 7和Apache 2.4,解压。

下载mod_fcgid,然后将下载得的mod_fcgid.so文件复制到Apache的modules目录

然后在httpd.conf文件中添加以下内容。

注意事项:

  • PHP安装路径如果包含空格,需要在每个空格前加一个\符号,

  • 路径中的非英文字符时必须转码为utf-8,

  • 原则上建议路径不要包含空格或中文字符。

  • 请将以下配置中的路径修改为你电脑上面正确的路径。



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错误,即没有权限访问。


你可能感兴趣的:(PHP 7 Apache 2.4 fastcgi mod_fcgid配置方法)