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

相关文章
相关标签/搜索