Ubuntu 12.04 çalıştıran geliştirme kutumda birden fazla php sürümü çalıştırabilmek istiyorum. Ne yapmak istiyorum domain olarak localhost kullandığınızda bir varsayılan kullanılır (diyelim php 5.3.17). Alan adı olarak 547.localhost kullandığımda 5.4.7 php kullanılır. Fastcgi kullanarak bu çalışmayı sağlamak için bazı öğreticiler gördüm ama şimdiye kadar işe alamadım. Bu eğiticilere baktım:
- 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/
Görebildiğim kadarıyla gereken her şeyi yaptım. Sorun php sadece çalışmıyor olmasıdır. Ne zaman o gitmek http://localhost/somephpfile.php
sadece php dosyasının kaynağını çıkarır. Aynısı http://547.localhost/somephpfile.php
.
Birisinin kaçırdığım şeyi tespit edebilmesi umuduyla attığım adımları yıkacağım.
- Önce kullanarak varsayılan bir lamba yığını kurdum
sudo apt-get install lamp-server^ phpmyadmin
. Bundan sonra ben php depo sürümünü çalışan bir çalışma geliştirme sunucusu vardı. - Sonra, biri 5.3.17 ve diğeri 5.4.7 için olmak üzere iki php yüklemesi oluşturmak için phpfarm kullandım. Phpfarm lokalizasyonu
/etc/php/phpfarm
, bu yüzden yürütülebilir dosyalar/etc/php/phpfarm/inst/php-{version}/bin
- Sonra apache ve disabe mod_php için suaxec ve fastcgi ile
sudo a2enmod fastcgi actions suexec && sudo a2dismod php5
Sonra,
/etc/apache2/mods-enabled/fastcgi.conf
okumak için düzenledim :<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>
Sonra
/var/www/
bir klasör cgi-bin ve bu klasörde iki php sürümlerinin her biri için aşağıdaki gibi iki dosya oluşturdum (5.3.17 için sadece birini gösterir/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
Son adım sanal ana bilgisayarlar oluşturmaktı. Sonunda üç dosya var
/etc/apache2/sites-enabled
: 000-default, php5.3.17 ve php5.4.7 Aşağıdaki içeriklerle:varsayılan:
<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>
Sonunda okumak için / etc / hosts değiştirdim
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
Şimdi işlerin çalışmasını beklerdim ama ne yazık ki öyle değil. Bunun yerine bir php dosyaları sadece ham dosyayı çıktı php üzerinden çalışır.
Burada kaçırdığım bir şey olmalı, ama birçok kez bu süreçten geçtim ve nerede yanlış gittiğini anlayamıyorum.
Action php-cgi /php-fcgi/php547.fcgi
/var/www/cgi-bin/php-cgi-5.4.7
için/var/www/cgi-bin/php54.fcgi
örneğin ya da sadece/var/www/cgi-bin/php.fcgi
. Bunun işe yarayıp yaramadığını kontrol edebilir misiniz? Sadece 5.4.7 sürümü için.