Saya ingin dapat menjalankan beberapa versi php di kotak pengembangan saya yang menjalankan Ubuntu 12.04. Apa yang ingin saya capai adalah bahwa ketika saya menggunakan localhost sebagai domain digunakan default (katakanlah php 5.3.17). Ketika saya menggunakan 547.localhost sebagai domain, php 5.4.7 digunakan. Saya telah melihat beberapa tutorial untuk membuatnya bekerja menggunakan fastcgi tetapi sampai sekarang saya belum bisa membuatnya berfungsi. Saya telah melihat tutorial ini:
- 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/
Sejauh yang saya bisa lihat, saya telah melakukan semua yang diperlukan. Masalahnya adalah php itu tidak berjalan. Ketika saya pergi ke http://localhost/somephpfile.php
sana hanya menampilkan sumber file php. Sama untuk http://547.localhost/somephpfile.php
.
Saya akan memecah langkah apa yang saya ambil dengan harapan seseorang dapat menemukan apa yang saya lewatkan.
- Pertama saya memasang tumpukan lampu standar menggunakan
sudo apt-get install lamp-server^ phpmyadmin
. Setelah ini, saya memiliki server pengembangan yang menjalankan versi repositori dari php. - Kemudian saya menggunakan phpfarm untuk membuat dua instalasi php, satu untuk 5.3.17 dan satu untuk 5.4.7. Lokasi phpfarm adalah
/etc/php/phpfarm
, sehingga executable berada di/etc/php/phpfarm/inst/php-{version}/bin
- Kemudian saya mengaktifkan suaxec dan fastcgi untuk apache dan disabe dengan mod_php
sudo a2enmod fastcgi actions suexec && sudo a2dismod php5
Selanjutnya, saya diedit
/etc/apache2/mods-enabled/fastcgi.conf
untuk membaca:<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>
Kemudian di
/var/www/
saya membuat folder cgi-bin dan di folder ini dua file, untuk masing-masing dari dua versi php sebagai berikut (saya hanya menunjukkan satu untuk 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
Langkah terakhir adalah membuat host virtual. Pada akhirnya saya memiliki tiga file di
/etc/apache2/sites-enabled
: 000-default, php5.3.17 dan php5.4.7 Dengan konten berikut:default:
<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>
Akhirnya saya mengubah / etc / hosts untuk membaca
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
Sekarang saya berharap hal-hal berfungsi, tetapi sayangnya tidak. Sebaliknya bahwa file php dijalankan melalui php itu hanya menghasilkan file mentah.
Pasti ada sesuatu yang saya lewatkan di sini, tetapi saya telah melalui proses berkali-kali dan saya tidak tahu di mana itu salah.
/var/www/cgi-bin/php-cgi-5.4.7
menjadi/var/www/cgi-bin/php54.fcgi
misalnya atau adil/var/www/cgi-bin/php.fcgi
. Bisakah Anda memeriksa apakah itu membantu? Hanya untuk versi 5.4.7.Action php-cgi /php-fcgi/php547.fcgi
Jawaban:
Di virtualhosts Anda, Anda menambahkan handler, tetapi Anda tidak mengatur handler yang mengapa tidak diproses. Menambahkan:
sebelumnya
</Directory>
di setiap file host virtual.sumber
Saya menyukai gambaran singkat ini selangkah demi selangkah oleh SeeDoubleYou dan ingin mencobanya sendiri. Apa yang hilang itu
sudo chmod +x /var/www/cgi-bin/*
Action php-cgi /php-fcgi/php<version>.fcgi
dalamvhost.conf
filesudo apt-get install apache2-suexec-pristine libapache2-mod-fastcgi
FastCgiWrapper /usr/lib/apache2/suexec
dalamfastcgi.conf
fileFastCgiIpcDir /var/lib/apache2/fastcgi
FastCgiIpcDir /var/lib/apache2/fastcgi: already defined as "/var/lib/apache2/fastcgi"
Bagi siapa pun yang mencoba mengatur php_admin_value dan php_value melalui file .htaccess atau vhosts: Ini tidak dimungkinkan dengan FCGI. Sebagai gantinya, Anda dapat menggunakan file .user.ini untuk mengatur konfigurasi php.ini spesifik direktori.
sumber