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を実行する動作中の開発サーバーがありました。/etc/php/phpfarm
なので、実行可能ファイルは/etc/php/phpfarm/inst/php-{version}/bin
にありますSudo a2enmod fastcgi actions suexec && Sudo a2dismod php5
でmod_phpを無効にします次に、/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>
次に/var/www/
で、cgi-binフォルダーとこのフォルダーに2つのファイルを作成しました。2つのphpバージョンのそれぞれに対して、次のようにしています(5.3.17 /var/www/php5317.fcgi
の1つのみを示しています)。
#!/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
最後のステップは、仮想ホストを作成することでした。最後に、/etc/Apache2/sites-enabled
:000-default、php5.3.17およびphp5.4.7に3つのファイルがあり、次の内容が含まれています。
デフォルト:
<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>
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>
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>
最後に/ 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
今、私は物事が機能することを期待しますが、悲しいことに彼らは機能しません。代わりに、phpファイルがphpを実行するのではなく、rawファイルを出力します。
ここで見逃したものがあるに違いありませんが、何度もこのプロセスを経てきたため、どこがうまくいかないのかわかりません。
仮想ホストにハンドラーを追加しましたが、ハンドラーを設定しなかったため、処理されません。追加:
<FilesMatch "\.php$">
SetHandler php-cgi
</FilesMatch>
前 </Directory>
各仮想ホストファイル。
私は SeeDoubleYo によるこの短いステップバイステップの概要が好きで、自分で試してみたかったです。欠けていたのは
Sudo chmod +x /var/www/cgi-bin/*
Action php-cgi /php-fcgi/php<version>.fcgi
ファイルのvhost.conf
行に必要ですSudo apt-get install Apache2-suexec-pristine libapache2-mod-fastcgi
FastCgiWrapper /usr/lib/Apache2/suexec
ファイルのfastcgi.conf
行に必要ですFastCgiIpcDir /var/lib/Apache2/fastcgi
[.____も削除する必要がありました。]FastCgiIpcDir /var/lib/Apache2/fastcgi: already defined as "/var/lib/Apache2/fastcgi"
が表示されます.htaccessまたはvhostsファイルを介してphp_admin_valueとphp_valueを設定しようとしている人のために:これはFCGIでは不可能です。代わりに、 。user.ini files を使用して、ディレクトリ固有のphp.ini構成を設定できます。