PHP 作为 FastCGI:自定义 php.ini 不起作用

PHP 作为 FastCGI:自定义 php.ini 不起作用

我正在将 PHP 作为 FastCGI 运行(我需要多个版本的 PHP)。

.htaccess

AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/php-5.2.17.fcgi

cgi-bin/php-5.2.17.fcgi

#!/bin/sh
PHP_CGI=/usr/local/php/5.2.17/bin/php-cgi
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI -c /home/john/www/crm/php.ini

主要问题是 PHP 忽略了 -c 选项。我的 php.ini 文件未加载。

有人可以分享一些建议吗?

答案1

我的第一个想法是权限——Apache 通常以受限用户身份运行,通常是 www 用户或 apache,这取决于您的 Linux 风格以及您安装 Apache 的方式。

这意味着在几乎所有 Linux(Linii?)的默认权限下,Apache 用户(也是运行 php-cgi 的同一用户)无法读取主目录内的任何文件。

我会将 php.ini 文件移至另一个位置(例如 /usr/local/php/crm/php.ini),我怀疑这会解决您的问题。另一个选择是使用完全独立的脚本生成 php-cgi 进程,可以选择在其自己的用户帐户下运行,然后让 Apache 与之通信。

答案2

我对这个话题还不熟悉,所以如果我错了请不要杀了我,但你不应该使用这样的东西吗:

    <Directory "/path/to/doc/root">
      Options Indexes MultiViews FollowSymLinks +ExecCGI
      FCGIWrapper /path/to/cgi-bin/php-5.2.17.fcgi .php
      Order allow,deny
      allow from all
    </Directory>

尝试使用 -d 开关并检查 phpinfo 中是否可以这样更改。如果有效,则说明您的方法可能正确(我错了 :) )

相关内容