Ubuntu 12.04を実行している開発ボックスで複数のphpバージョンを実行できるようにしたい。私が達成したいのは、ローカルホストをドメインとして使用する場合、デフォルトが使用されることです(たとえば、PHP 5.3.17)。ドメインとして547.localhostを使用すると、php 5.4.7が使用されます。fastcgiを使用してこれを機能させるためのチュートリアルを見たことがありますが、これまでは機能させることができませんでした。私はこれらのチュートリアルを見ました:
- http://dbforch.wordpress.com/2010/05/21/apache2-fastcgi-multiple-php-versions-ubuntulucid-10-04/
- http://www.metod.si/multiple-php-versions-with-apache-2-fastcgi-phpfarm-on-ubuntu/
私が見る限り、私は必要なことをすべてやった。問題は、phpが実行されないことです。私がhttp://localhost/somephpfile.php
それに行くときは、phpファイルのソースを出力するだけです。についても同じですhttp://547.localhost/somephpfile.php
。
誰かが私が見逃したものを見つけることができることを期待して、私がとったステップを分析します。
- 最初に、を使用してデフォルトのランプスタックをインストールしました
sudo apt-get install lamp-server^ phpmyadmin
。この後、リポジトリバージョンのphpを実行する動作中の開発サーバーがありました。 - 次に、phpfarmを使用して、5.3.17用と5.4.7用の2つのphpインストールを作成しました。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>
次に、
/var/www/
cgi-binフォルダーを作成し、このフォルダーに2つのファイルを作成しました。2つのPHPバージョンのそれぞれについて、次のとおりです(5.3.17の1つのみを表示します/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
最後のステップは、仮想ホストを作成することでした。最後に、次の3つのファイルがあります
/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>
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ファイルのみが出力されます。
ここで見逃したことがあるに違いありませんが、私は何度もこのプロセスを経験しており、どこが悪いのかわかりません。
Action php-cgi /php-fcgi/php547.fcgi
/var/www/cgi-bin/php-cgi-5.4.7
を変更し/var/www/cgi-bin/php54.fcgi
てみてください/var/www/cgi-bin/php.fcgi
。それが役立つかどうか確認できますか?5.4.7バージョンのみ。