See*_*You 16 ubuntu php fastcgi suexec apache-2.2
我希望能够在运行 Ubuntu 12.04 的开发箱上运行多个 php 版本。我想要完成的是,当我使用 localhost 作为域时,会使用默认值(假设 php 5.3.17)。当我使用 547.localhost 作为域时,使用 php 5.4.7。我看过一些教程来使用 fastcgi 使其工作,但直到现在我还无法让它工作。我看过这些教程:
因为就我所见,我已经完成了所需的一切。问题是 php 根本无法运行。当我去http://localhost/somephpfile.php
它只是输出 php 文件的来源。对于http://547.localhost/somephpfile.php
.
我将分解我采取的步骤,希望有人能够发现我遗漏的内容。
首先,我使用sudo apt-get install lamp-server^ phpmyadmin
. 在此之后,我有一个运行 php 存储库版本的工作开发服务器。
然后我使用 phpfarm 创建了两个 php 安装,一个用于 5.3.17,一个用于 5.4.7。phpfarm 的位置是 /etc/php/phpfarm
,所以可执行文件在/etc/php/phpfarm/inst/php-{version}/bin
然后我为 apache 启用 suaxec 和 fastcgi 并禁用 mod_php sudo a2enmod fastcgi actions suexec && sudo a2dismod php5
接下来,我编辑/etc/apache2/mods-enabled/fastcgi.conf
为:
<IfModule mod_fastcgi.c>
FastCgiIpcDir /var/lib/apache2/fastcgi
FastCgiWrapper /usr/lib/apache2/suexec FastCgiConfig -idle-timeout
110 -killInterval 120 -pass-header HTTP_AUTHORIZATION -autoUpdate
ScriptAlias /php-fcgi/ /var/www/cgi-bin/
</IfModule>
Run Code Online (Sandbox Code Playgroud)
然后在/var/www/
我创建了一个文件夹 cgi-bin 和这个文件夹中的两个文件,对于两个 php 版本中的每一个,如下(我只显示 5.3.17 的一个/var/www/php5317.fcgi
):
#!/bin/sh
# you can change the PHP version here.
version="5.3.17"
# php.ini file location, */php-5.2.13/lib equals */php-5.2.13/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
Run Code Online (Sandbox Code Playgroud)
最后一步是创建虚拟主机。最后我在/etc/apache2/sites-enabled
000-default、php5.3.17 和 php5.4.7三个文件中包含以下内容:
默认:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php5317.fcgi
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
php5.3.17:
<VirtualHost *:80>
ServerName 5317.localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php5317.fcgi
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
php5.4.7:
<VirtualHost *:80>
ServerName 547.localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php547.fcgi
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
最后我将 /etc/hosts 更改为读取
127.0.0.1 localhost
127.0.0.1 547.localhost
127.0.0.1 5317.localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)
现在我希望事情能奏效,但遗憾的是他们没有。取而代之的是,一个 php 文件通过 php 运行,它只输出原始文件。
这里一定有我遗漏的地方,但我已经经历了很多次,我无法弄清楚哪里出了问题。
小智 2
在您的虚拟主机中,您添加了一个处理程序,但您没有设置该处理程序,这就是它未被处理的原因。添加:
<FilesMatch "\.php$">
SetHandler php-cgi
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
</Directory>
在每个虚拟主机文件之前。
归档时间: |
|
查看次数: |
21377 次 |
最近记录: |