使用Apache2模块从Ubuntu 14上的源代码安装PHP5.3.29

使用Apache2模块从Ubuntu 14上的源代码安装PHP5.3.29,apache2,ubuntu-14.04,php-5.3,Apache2,Ubuntu 14.04,Php 5.3,我在Ubuntu14和Apache2上分别成功地安装了PHP5.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 我尝试

我在Ubuntu14和Apache2上分别成功地安装了PHP5.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

我尝试过的:

来自此网站:
“配置Apache和PHP”,它要求我在Apache配置文件中添加以下内容:

LoadModule php5_module modules/libphp5.so

但是,我没有“libphp5.so”模块

有人让我运行这个:

sudo apt-get install libapache2-mod-php5
但是在运行命令之后,它为我安装了PHP5.5.9,但是我需要PHP5.3.29

如何使Apache运行我已安装的PHP 5.3.29?

这对我很有用:

sudo -s
下载源 安装所有必要的依赖项 编译PHP 激活Apache模块 创建相应的配置文件 插入:

#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
#!/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
创建环境脚本以启动附加PHP版本

vi /usr/lib/cgi-bin/php53-cgi
插入:

#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
#!/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
来源:

我这样做:

# 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

检查并修改httpd.conf模块
php5

LoadModule php5_module modules/libphp5.so
加载项httpd.conf:

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
检查您的Apache安装中现在是否读取了phpinfo,如:

http://localhost

维蒂奇的回答太棒了!我使用它是为了在我的unix网站上用PHP5.6替换PHP5.1。与Wittich不同,我没有试图同时运行两个版本;我只是想从一个与apache集成的旧版本的php升级到一个可以从cgi运行的新版本

出于某种原因,Wittich的几个命令(如SetHandler命令)在我尝试之后阻止了Apache加载。我最终不得不简化他的答案,以便Apache能够正确运行。我对Wittich的程序做了6项修改:

  • 我使用了yum而不是apt-get,因为apt-get不能在我的Unix系统上运行

  • 因为我安装的是PHP5.6而不是PHP5.3,所以我在configure命令的开关中将“php53”的所有实例都更改为“php56”。这并不是所有工作都需要的,但它将帮助您了解我下面的路径:

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

  • scriptAlias/phppath/“/var/www/cgi-bin/cgi_-wrapper/”
    动作php脚本/phppath/cgi_包装器 这个文件的内容和存在让我跳过或更改了Wittich的几个步骤。我既没有创建php53 cgi,也没有创建php53.conf

  • 我没有创建php53 cgi,而是用建议用于php53 cgi的内容替换了现有文件(/var/www/cgi-bin/cgi-wrapper/cgi-wrapper)的内容。由于其他行阻止apache正确重新启动,我最终发现该文件的内容只是他的第一行和最后一行(数字符号前没有斜杠):
  • \#!/bin/sh
    exec/usr/bin/php56/php-cgi
  • 我没有创建php53.conf,而是替换了php.conf文件(/etc/httpd/conf.d/php.conf)中的单个命令。我更改了“添加php处理程序”命令,使其现在的内容为:
  • AddHandler php script.php
  • 我根本没有更改httpd.conf文件,因为我的目标只是替换旧的php,而不是创建在不同虚拟主机上运行的不同版本的php。然而,我相信我可以设置我的网站在不同的目录中运行旧版本和新版本,只需更改httpd.conf文件,使旧的AddHandler出现在一些目录中,而新的AddHandler出现在其他目录中
  • 因此,总之,如果您有一个现有的php_cgi.conf文件可以劫持并用作指南,那么很容易将Wittich的答案转换为一种从基于apache的旧php版本升级到基于cgi的新版本的方法

    我发现David Brogdon的一篇帖子是对Wittich回答的一个很好的补充,适用于那些不熟悉configure、make和make install命令的人:


    我在互联网上搜索了几个小时,没有找到比布罗顿的帖子和威蒂奇的答案更有用的东西。Wittich的答案在他的Unix系统上一定运行得很好,但为了让它在我的Unix系统上运行,我不得不对它进行一些修改。

    这对我来说在scratch Ubuntu 14.04上很有效:

    手动安装 更新系统包

  • apt获取更新

  • apt获得升级-y

  • 安装依赖项并准备环境

  • apt get install-y build-essential libxml2 dev apache2 apache2 dev

  • echo“导出路径=/usr/local/bin:/usr/local/sbin:$PATH”>>~/.bashrc

  • apt get install-y libapache2-mod-php5——建议不要安装

  • 下载PHP5.3.29

  • apt get install-y wget&&cd/tmp&&wgethttp://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
  • 检查是否有效

  • 服务apache2重启&php-v

  • 我试过这个,但对我的具体案例无效。似乎如果网站是使用.htaccess来指向index.php文件的所有路径(如大多数CMS),它会生成一个无限循环的/php53 cgi/*/index.html,我找不到一个好方法来阻止它。在调用
    phpinfo()
    时,仍然声明使用PHP5.5。
    short_open_tag = On
    
    LoadModule php5_module modules/libphp5.so
    
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>
    
    # sudo /usr/local/apache2/bin/apachectl start
    
    http://localhost