我在Ubuntu 14上用Apache 2分别成功安装了PHP 5.3.29。
我使用以下方法安装PHP:
sudo -i
wget http://in1.php.net/distributions/php-5.3.29.tar.bz2
tar -xvf php-5.3.29.tar.bz2
cd php-5.3.29
./configure
make
make install
然而,PHP和Apache似乎没有任何联系。这意味着我已经安装了Apache和PHP,但Apache不运行PHP。
我尝试了什么:
来自此网站:https://docs.moodle.org/28/en/Compiling_PHP_from_source
"配置Apache和PHP",它要求我在Apache配置文件中添加它:
LoadModule php5_module modules / libphp5.so
但是,我没有" libphp5.so"模块。
有些人让我这样做:
sudo apt-get install libapache2-mod-php5
但是在运行命令后,它为我安装了PHP 5.5.9,但我需要PHP 5.3.29。
如何让Apache运行我已安装的PHP 5.3.29?
答案 0 :(得分:11)
这对我有用:
sudo -s
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget -O php-5.3.29.tar.gz http://de1.php.net/get/php-5.3.29.tar.gz/from/this/mirror
tar -xzf php-5.3.29.tar.gz
cd php-5.3.29
apt-get install apache2 php5 php5-common php5-cli php5-mysql php5-gd php5-mcrypt php5-curl libapache2-mod-php5 php5-xmlrpc mysql-server mysql-client libapache2-mod-fastcgi
apt-get install build-essential php5-dev libbz2-dev libmysqlclient-dev libxpm-dev libmcrypt-dev libcurl4-gnutls-dev libxml2-dev libjpeg-dev libpng12-dev
./configure --prefix=/usr/share/php53 --datadir=/usr/share/php53 --mandir=/usr/share/man --bindir=/usr/bin/php53 --includedir=/usr/include/php53 --sysconfdir=/etc/php53/apache2 --with-config-file-path=/etc/php53/apache2 --with-config-file-scan-dir=/etc/php53/conf.d --enable-bcmath --with-curl=shared,/usr --with-mcrypt=shared,/usr --enable-cli --with-gd --with-mysql --with-mysqli --enable-libxml --enable-session --enable-xml --enable-simplexml --enable-filter --enable-inline-optimization --with-jpeg-dir --with-png-dir --with-zlib --with-bz2 --with-curl --enable-exif --enable-soap --with-pic --disable-rpath --disable-static --enable-shared --with-gnu-ld --enable-mbstring
make && make install
a2enmod cgi fastcgi actions
service apache2 restart
vi /etc/apache2/php53.conf
插入:
#Include file for virtual hosts that need to run PHP 5.3
SetHandler application/x-httpd-php5
ScriptAlias /php53-cgi /usr/lib/cgi-bin/php53-cgi
Action application/x-httpd-php5 /php53-cgi
AddHandler application/x-httpd-php5 .php
创建环境脚本以启动其他PHP版本
vi /usr/lib/cgi-bin/php53-cgi
插入:
#!/bin/sh
PHPRC="/etc/php53/apache2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php53/php-cgi
配置Apache 2的虚拟主机
Include php53.conf
ServerName example.org
DocumentRoot /var/www/sites/example.org
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
最后,重启......
service apache2 restart
来源:https://erdfisch.de/en/multiple-versions-php-apache-under-linux
答案 1 :(得分:0)
Wittich的答案非常棒!我使用它来在我的unix网站上用php 5.6替换php 5.1。与Wittich不同,我并没有尝试同时运行两个版本;我只是尝试从与apache集成的较旧版本的php升级到从cgi运行的较新版本。
出于某种原因,Wittich的几个命令(例如SetHandler命令)阻止了Apache在我尝试之后加载。我最终必须简化他的答案,以便Apache能够正确运行。我在Wittich的程序中做了6次修改:
我使用yum而不是apt-get,因为apt-get不会在我的Unix系统上运行。
由于我安装了php 5.6而不是php 5.3,我在configure命令的开关中将所有“php53”实例更改为“php56”。这不是一切工作所必需的,但它将帮助您理解我的路径:
在我的一个httpd配置文件夹(/etc/httpd/conf.d)中,我找到了一个已经为php(php_cgi.conf)的cgi实现设置的文件。其内容如下:
scriptAlias / phppath /“/ var / www / cgi-bin / cgi_wrapper /”
动作php-script / phppath / cgi_wrapper
这个文件的内容和存在让我跳过或改变了Wittich的几个步骤。我既没有创建php53-cgi,也没有创建php53.conf。
\#!/ bin / sh的
exec / usr / bin / php56 / php-cgi
AddHandler php-script .php
因此,总而言之,如果您有一个可以劫持并使用的现有php_cgi.conf文件,很容易将Wittich的答案转换为从较旧的基于apache的php版本升级到更新的基于cgi的版本的方法。指引。
我发现David Brogdon的帖子是Wittich对那些不熟悉configure,make和make install命令的人的答案的一个很好的补充:
http://www.onlamp.com/pub/a/php/2000/11/17/php_admin.html
我在互联网上搜索了几个小时,从来没有发现任何像Brogdon的帖子和Wittich的答案那样有用的东西。 Wittich的答案必须在他的Unix系统上完美运行,但我必须对其进行一些修改才能让它在我的系统上工作。
答案 2 :(得分:0)
这对我适用于从头开始的Ubuntu 14.04:
更新系统软件包
apt-get update
apt-get upgrade -y
安装依赖项并准备环境
apt-get install -y build-essential libxml2-dev apache2 apache2-dev
echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc
apt-get install -y libapache2-mod-php5 --no-install-recommends
下载PHP 5.3.29
apt-get install -y wget && cd /tmp && wget http://php.net/distributions/php-5.3.29.tar.bz2
解压缩并配置apache的模块apxs2
tar -xvf php-5.3.29.tar.bz2 && cd php-5.3.29 && ./configure --with-apxs2=/usr/bin/apxs2
安装
make && make install
检查是否有效
service apache2 restart && php -v
docker pull fabriciohp/php-5.3.29
答案 3 :(得分:-2)
我这样做:
# wget wget http://in1.php.net/distributions/php-5.3.29.tar.bz2
# tar -xvf php-5.3.29.tar.bz2
# cd php-5.3.29
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
# make
# sudo make install
# sudo cp php.ini-development /usr/local/lib/php.ini.
然后更改php.ini。更改选项,
short_open_tag = Off
到
short_open_tag = On
检查并修改httpd.conf模块php5
:
LoadModule php5_module modules/libphp5.so
在httpd.conf中添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
重启apache2
,默认安装在:/ usr / local / apache2
# sudo /usr/local/apache2/bin/apachectl start
检查phpinfo现在在您的Apache安装中读取,如:
http://localhost