elloo,
我有一些运行在php-5.2.x上的旧php脚本,当前服务器上有php-5.3.x。 为了解决这个问题,我有两个select是降级php-5.3.x,或者在php-5.2.x提供cgi脚本的同时安装php-5.2.x和php-5.3.x。 我决定去第二个选项
我已经按照这个教程 ,我可以得到它的大部分工作,但除了执行selectphp-cgi版本的shell脚本。 我不能让Apache来执行这个脚本。
我如何让Apache执行
#!/bin/sh # you can change the PHP version here. version="5.2.6" # php.ini file location, */php-5.2.6/lib equals */php-5.2.6/lib/php.ini. PHPRC=/etc/php/phpfarm/inst/php-${version}/lib/php.ini export PHPRC PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS # which php-cgi binary to execute exec /etc/php/phpfarm/inst/php-${version}/bin/php-cgi
我的apache vhost.conf
<VirtualHost *:80> ServerName 526.localhost DocumentRoot /home/getmizanur/public_html/www <Directory "/home/getmizanur/public_html/www"> AddHandler php-cgi .php Action php-cgi /php-fcgi/php-cgi-5.2.6 </Directory> </VirtualHost>
有人可以告诉我我做错了什么?
提前致谢。
解决scheme:如果我做了a2dismod php5那么上面的configuration工作。 当a2enmod php5被激活时,即使在告诉apache执行php5.2 shell脚本之后,apache仍然执行php5.3而不是php5.2。 解决我的问题,我不得不改变我的虚拟主机configuration
<VirtualHost *:80> ServerName 526.localhost DocumentRoot /home/getmizanur/public_html/www DirectoryIndex index.php <Directory "/home/getmizanur/public_html/www"> AddHandler php-cgi .php Action php-cgi /php-fcgi/php-cgi-5.2.6 <FilesMatch "\.php"> SetHandler php-cgi </FilesMatch> </Directory> </VirtualHost>
早就开始工作了。
根据你的具体要求,具体来说,你是否可以像CGI那样执行PHP,而不是通过mod_php来执行 – suPHP( http://www.suphp.org/Home.html )是一个非常方便的工具。 您可以使用它来为各种CGI解释器(包括多个PHP版本)创build一个configuration文件,并根据包括文件扩展名,在path上的.htaccess文件中设置的环境variables等因素通过给定的解释器执行请求。
我使用它来允许开发人员在他们的.htaccess文件中指定他们要执行哪个版本的PHP,因此我可以在同一个Web服务器基础结构中支持传统PHP 4,最新稳定版本5和新版本的testing。增加了将PHP执行从Web服务器用户手中带回到文件所有者上下文中的好处。 希望这可以帮助。