Tôi muốn có thể chạy nhiều phiên bản php trên hộp phát triển chạy Ubuntu 12.04. Những gì tôi muốn thực hiện là khi tôi sử dụng localhost làm tên miền, một mặc định được sử dụng (giả sử php 5.3.17). Khi tôi sử dụng 547.localhost làm tên miền php 5.4.7 được sử dụng. Tôi đã thấy một số hướng dẫn để làm việc này bằng cách sử dụng fastcgi nhưng cho đến bây giờ tôi vẫn chưa thể làm cho nó hoạt động. Tôi đã xem các hướng dẫn này:
- http://dbforch.wordpress.com/2010/05/21/apache2-fastcgi-multipl-php-versions-ubuntulucid-10-04/
- http://www.metod.si/multipl-php-versions-with-apache-2-fastcgi-phpfarm-on-ub Ubuntu /
Theo như tôi có thể thấy tôi đã làm mọi thứ cần thiết. Vấn đề là php đơn giản là không chạy. Khi tôi đi đến http://localhost/somephpfile.php
nó chỉ xuất ra nguồn của tệp php. Tương tự cho http://547.localhost/somephpfile.php
.
Tôi sẽ chia nhỏ những bước tôi đã thực hiện với hy vọng ai đó có thể phát hiện ra những gì tôi đã bỏ lỡ.
- Đầu tiên tôi cài đặt một ngăn đèn mặc định bằng cách sử dụng
sudo apt-get install lamp-server^ phpmyadmin
. Sau này, tôi đã có một máy chủ phát triển làm việc chạy phiên bản kho lưu trữ của php. - Sau đó, tôi đã sử dụng phpfarm để tạo hai bản cài đặt php, một cho 5.3.17 và một cho 5.4.7. Bản địa của phpfarm là
/etc/php/phpfarm
, vì vậy các tệp thực thi nằm trong/etc/php/phpfarm/inst/php-{version}/bin
- Sau đó, tôi kích hoạt suaxec và fastcgi cho apache và disabe mod_php với
sudo a2enmod fastcgi actions suexec && sudo a2dismod php5
Tiếp theo, tôi chỉnh sửa
/etc/apache2/mods-enabled/fastcgi.conf
để đọc:<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>
Sau đó,
/var/www/
tôi đã tạo một thư mục cgi-bin và trong thư mục này có hai tệp, cho mỗi hai phiên bản php như sau (tôi chỉ hiển thị một thư mục cho 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
Bước cuối cùng là tạo máy chủ ảo. Cuối cùng, tôi có ba tệp trong
/etc/apache2/sites-enabled
: 000-default, php5.3.17 và php5.4.7 Với các nội dung sau:mặc định:
<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>
Cuối cùng tôi đã thay đổi / etc / hosts để đọc
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
Bây giờ tôi sẽ mong mọi thứ hoạt động, nhưng thật đáng buồn là họ không làm thế. Thay vào đó, một tệp php chạy qua php, nó chỉ xuất ra tệp thô.
Phải có một cái gì đó tôi đã bỏ lỡ ở đây, nhưng tôi đã trải qua quá trình nhiều lần và tôi không thể tìm ra nó sai ở đâu.
Action php-cgi /php-fcgi/php547.fcgi
/var/www/cgi-bin/php-cgi-5.4.7
thành/var/www/cgi-bin/php54.fcgi
ví dụ hoặc chỉ/var/www/cgi-bin/php.fcgi
. Bạn có thể kiểm tra nếu điều đó giúp? Chỉ dành cho phiên bản 5.4.7.