我正在将 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 中是否可以这样更改。如果有效,则说明您的方法可能正确(我错了 :) )