【问题标题】:Using PHP 5.3 on old apache install在旧的 apache 安装上使用 PHP 5.3
【发布时间】:2014-03-13 14:46:02
【问题描述】:

我为一个客户完成了一个 php/mysql 项目,昨天打算将它部署到客户的盒子上——但很快就失败了。老实说,我在开始之前没有做足够的检查是我的错 - 但该项目是完全独立的,我目前不需要客户端服务器上的任何东西。

我使用 php 5.3 和 PDO 为 mysql 连接开发了该项目。当我访问客户端的服务器时,发现他们的安装非常旧,上次升级是在 2008 年(是的,认真的)。他们有 Apache 2.0 和 php 5.2,它们是在没有 PDO 的情况下配置/编译的,并且所有内容都最少。

我确实拥有服务器的 root 访问权限,但我不能盲目地开始升级。他们在该服务器上有一个完整的实时站点,带有实时购物车等,并且任何一般的 php 升级都需要彻底测试。因此,我正在寻找使用单独安装的 php 5.3 运行我的新项目的方法,我从包含所有必需内容的源代码编译并安装到单独的目录 (/opt/php53) 中。

我正在考虑在服务器上启用 fastcgi,然后使用它来运行我单独安装的 php。如果我在安装我的项目的 apache <Directory> 内执行此操作,它应该只影响那个目录 - 并且应该保持其他所有内容不变。事情变得更加复杂,因为我没有任何可以播放/测试配置的测试服务器 - 我必须直接在实时服务器上工作。

我想知道这种 fastcgi 方法是否有效,或者我应该考虑其他一些选项。

【问题讨论】:

    标签: php mysql apache fastcgi


    【解决方案1】:

    我做了一些进一步的挖掘/实验(利用我在英国而客户及其客户在美国的事实 - 所以那里仍然是晚上)。以下设置似乎奏效了——这利用了 php-cgi 而无需使用 fastcgi——我仍然得到了很好的响应时间。

    1) 在 apache httpd.conf 文件中保留几乎所有内容 - 包括现有的 libphp5.so,它利用现有的 5.2 安装。

    2) 将 php 5.3 安装到一个单独的目录中 - 在我的例子中是 /opt/php53。

    3) 在 httpd.conf 中,添加以下内容(或确保它已经存在)

    ScriptAlias /cgi-bin/ /var/www/mainsite/cgi-bin
    AddHandler cgi-script .cgi
    
    <Directory /var/www/mainsite/newapp>
        Options -Indexes FollowSymLinks +ExecCGI
        AllowOverride AuthConfig FileInfo
        AddHandler php5-cgi .php
        Action php5-cgi /cgi-bin/php.cgi
        DirectoryIndex index.php index.html
        Order allow,deny
        Allow from all
    </Directory>
    

    4) 在目录/var/www/mainsite/cgi-bin/ 创建文件php.cgi,内容如下:

    #!/bin/bash
    PHP_CGI=/opt/php53/bin/php-cgi
    PHP_FCGI_CHILDREN=5
    PHP_FCGI_MAX_REQUESTS=1000
    ### no editing below ###
    export PHP_FCGI_CHILDREN
    export PHP_FCGI_MAX_REQUESTS
    exec $PHP_CGI
    

    5) 重启apache:/etc/init.d/httpd restart

    之后,我将带有&lt;?php phpinfo(); ?&gt; 的文件放入Web 服务器的根目录和我的newapp 目录中。从它生成的服务器的根目录执行(除其他外):

    PHP Version 5.2.5
    
    Build Date  Dec 11 2008 19:04:47
    Server API  Apache 2.0 Handler
    

    当从newapp 目录执行时,它产生:

    PHP Version 5.3.28
    
    Build Date  Feb 13 2014 17:00:43 
    Server API  CGI/FastCGI 
    

    这正是我想要的。

    【讨论】:

      【解决方案2】:

      您可以尝试在 fastcgi 上为各种 PHP 版本使用不同的端口。

      另一种方法:http://linuxplayer.org/2011/05/intall-multiple-version-of-php-on-one-server

      【讨论】:

      • 我不想在现有的 5.2 中使用 fastcgi - 我想将现有的 apache 模块与 php 5.2 和现有站点一起保留 - 并且只在我的子目录中使用 fastcgi 的 5.3
      • 为此类遭遇找到的另一个资源:askubuntu.com/questions/50344/…
      猜你喜欢
      • 2017-02-10
      • 2010-11-24
      • 2018-06-24
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2018-06-03
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多