使用Apache 2模块从Ubuntu 14上的Sources安装PHP 5.3.29

时间:2015-03-03 02:48:41

标签: apache2 ubuntu-14.04 php-5.3

我在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?

4 个答案:

答案 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

编译PHP

./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

激活Apache模块

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次修改:

  1. 我使用yum而不是apt-get,因为apt-get不会在我的Unix系统上运行。

  2. 由于我安装了php 5.6而不是php 5.3,我在configure命令的开关中将所有“php53”实例更改为“php56”。这不是一切工作所必需的,但它将帮助您理解我的路径:

  3. 在我的一个httpd配置文件夹(/etc/httpd/conf.d)中,我找到了一个已经为php(php_cgi.conf)的cgi实现设置的文件。其内容如下:

  4.     scriptAlias / phppath /“/ var / www / cgi-bin / cgi_wrapper /”
        动作php-script / phppath / cgi_wrapper

    这个文件的内容和存在让我跳过或改变了Wittich的几个步骤。我既没有创建php53-cgi,也没有创建php53.conf。

    1. 我没有创建php53-cgi,而是使用为php53-cgi建议的内容替换了现有文件(/ var / www / cgi-bin / cgi-wrapper / cgi-wrapper)的内容。由于其他行阻止apache正常重启,我最终将该文件的内容作为他的第一行和最后一行(在数字符号前没有斜线):
    2.     \#!/ bin / sh的
          exec / usr / bin / php56 / php-cgi
      1. 我没有创建php53.conf,而是替换了php.conf文件中的单个命令(/etc/httpd/conf.d/php.conf)。我更改了php命令的add-handler,现在它显示为:
      2.     AddHandler php-script .php
        1. 我根本没有更改httpd.conf文件,因为我的目标只是替换旧的php,而不是创建在不同虚拟主机上运行的不同版本的php。但是,我相信我可以设置我的网站在不同的目录中运行旧版本和新版本,只需更改httpd.conf文件,以便 AddHandler出现在某些目录中 new AddHandler会出现在其他人身上。
        2. 因此,总而言之,如果您有一个可以劫持并使用的现有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:

手动安装

更新系统软件包

  1. apt-get update

  2. apt-get upgrade -y

安装依赖项并准备环境

  1. apt-get install -y build-essential libxml2-dev apache2 apache2-dev

  2. echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc

  3. apt-get install -y libapache2-mod-php5 --no-install-recommends

下载PHP 5.3.29

  1. apt-get install -y wget && cd /tmp && wget http://php.net/distributions/php-5.3.29.tar.bz2

解压缩并配置apache的模块apxs2

  1. tar -xvf php-5.3.29.tar.bz2 && cd php-5.3.29 && ./configure --with-apxs2=/usr/bin/apxs2

安装

  1. make && make install

检查是否有效

  1. service apache2 restart && php -v

通过Docker

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