【问题标题】:Installing PHP 5.3.29 from Sources on Ubuntu 14 with Apache 2 Module在带有 Apache 2 模块的 Ubuntu 14 上从 Sources 安装 PHP 5.3.29
【发布时间】:2015-05-03 14:23:13
【问题描述】:

我在 Ubuntu 14 上成功安装了 PHP 5.3.29 和 Apache 2。

我用以下方法安装了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?

【问题讨论】:

    标签: apache2 ubuntu-14.04 php-5.3


    【解决方案1】:

    这在 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

    【讨论】:

      【解决方案2】:

      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,因此我在配置命令的开关中将所有“php53”实例更改为“php56”。这不是一切正常工作所必需的,但它会帮助您了解我的以下路径:

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

      scriptAlias /phppath/ "/var/www/cgi-bin/cgi_wrapper/"
      动作 php-script /phppath/cgi_wrapper

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

      1. 我没有创建 php53-cgi,而是将现有文件 (/var/www/cgi-bin/cgi-wrapper/cgi-wrapper) 的内容替换为 php53-cgi 建议的内容。由于其他行阻止 apache 正确重启,我最终得到该文件的内容只是他的第一行和最后一行(数字符号前没有斜杠):
      \#!/bin/sh
      执行 /usr/bin/php56/php-cgi
      1. 我没有创建 php53.conf,而是替换了 php.conf 文件 (/etc/httpd/conf.d/php.conf) 中的单个命令。我更改了 php 命令的 add-handler,现在显示为:
      AddHandler php脚本.php
      1. 我根本没有更改 httpd.conf 文件,因为我的目标只是替换旧的 php,而不是创建可以在不同虚拟主机上运行的不同版本的 php。但是,我相信我可以将我的网站设置为在不同的目录中运行旧版本和新版本,只需更改 httpd.conf 文件,以便 old AddHandler 会出现在某些目录中,同时new AddHandler 会出现在其他人中。

      因此,总而言之,如果您有一个现有的 php_cgi.conf 文件可以劫持并用作一个指南。

      我发现 David Brogdon 的帖子可以很好地补充 Wittich 对 configure、make 和 make install 命令的新手的回答:

      http://www.onlamp.com/pub/a/php/2000/11/17/php_admin.html

      我在互联网上搜索了几个小时,但从未找到像 Brogdon 的帖子和 Wittich 的回答那样有用的东西。 Wittich 的答案在他的 Unix 系统上一定可以完美运行,但我必须对其进行一些修改才能让它在我的系统上运行。

      【讨论】:

        【解决方案3】:

        这对我有用:

        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

        【讨论】:

        • 我试过这个,但它不适用于我的具体情况。似乎如果该站点被构建为使用 .htaccess 将所有路径指向 index.php 文件(例如大多数 CMS),它会生成 /php53-cgi/*/index.html 的无限循环,而我不能找到阻止它的好方法。
        • 在调用phpinfo() 时仍然使用php 5.5 遵循所有步骤。
        【解决方案4】:

        我这样做:

        # 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
        

        【讨论】:

          猜你喜欢
          • 2021-08-30
          • 2014-06-13
          • 1970-01-01
          • 2018-07-20
          • 2013-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-10
          相关资源
          最近更新 更多