Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何安装PHP5.4而不覆盖现有的旧PHP版本?_Php_Portability_Installation - Fatal编程技术网

如何安装PHP5.4而不覆盖现有的旧PHP版本?

如何安装PHP5.4而不覆盖现有的旧PHP版本?,php,portability,installation,Php,Portability,Installation,如何在不升级/影响现有PHP的情况下创建PHP5.4的可移植版本,因为该服务器上运行着实时网站 就像运行两个PHP实例一样 换句话说,如何构建PHP,使其在运行makeinstall时不会替换旧的PHP?您看过类似的内容吗?它可能会帮到你。根据澄清的问题更新 首先,您希望构建新的PHP版本,以便在不覆盖现有版本的情况下将其安装到其他位置。为此,请按照PHP构建说明进行以下更改: 执行/configure时,添加以下参数:--prefix=/opt/php54 这将把您的新PHP版本放在/opt/

如何在不升级/影响现有PHP的情况下创建PHP5.4的可移植版本,因为该服务器上运行着实时网站

就像运行两个PHP实例一样


换句话说,如何构建PHP,使其在运行
makeinstall
时不会替换旧的PHP?

您看过类似的内容吗?它可能会帮到你。

根据澄清的问题更新

首先,您希望构建新的PHP版本,以便在不覆盖现有版本的情况下将其安装到其他位置。为此,请按照PHP构建说明进行以下更改:

执行
/configure
时,添加以下参数:
--prefix=/opt/php54

这将把您的新PHP版本放在
/opt/php54/…
中,而不是默认情况下放在任何地方


原始答案

单个Apache web服务器一次只能使用一个mod_php版本。如果要使用多个版本,最简单的方法可能是使用CGI设置第二个PHP版本,并使用Scott答案的修改版本

在主Apache配置文件中设置CGI:

ScriptAlias /php54-cgi /usr/lib/cgi-bin/php54-cgi
Action application/x-httpd-php54 /php54-cgi
<VirtualHost [IP]:8080>
  DocumentRoot [DOCUMENT_ROOT]
  DirectoryIndex index.php
  ServerName [HOSTNAME]:8080
  <Directory [DOCUMENT_ROOT]>
    AllowOverride All
    Allow from All
  </Directory>

  <FilesMatch "\.php">
    SetHandler application/x-httpd-php52
  </FilesMatch>
</VirtualHost>
接下来,您需要设置绑定到端口8080的虚拟主机,并告诉它使用此版本的PHP:

ScriptAlias /php54-cgi /usr/lib/cgi-bin/php54-cgi
Action application/x-httpd-php54 /php54-cgi
<VirtualHost [IP]:8080>
  DocumentRoot [DOCUMENT_ROOT]
  DirectoryIndex index.php
  ServerName [HOSTNAME]:8080
  <Directory [DOCUMENT_ROOT]>
    AllowOverride All
    Allow from All
  </Directory>

  <FilesMatch "\.php">
    SetHandler application/x-httpd-php52
  </FilesMatch>
</VirtualHost>

DocumentRoot[文档\u根]
DirectoryIndex.php
服务器名[主机名]:8080
允许超越所有
通融
SetHandler应用程序/x-httpd-php52
(注意:这是我的想法,没有检查语法是否正确,因此可能需要一些调整。)

通过此配置,将使用指定版本的PHP执行虚拟主机中的PHP脚本


另一种方法是运行两个完全独立的Apache实例(或者一个Apache和另一个服务器,如nginx),每个都有自己的PHP版本,这可能更难,但从长远来看也更灵活

Apache有,但还不完整


最困难的部分是Ubuntu试图帮助设置Apache配置,但它会对事情的位置做出假设,因此您在管理这两个方面会遇到问题。使用不同的服务器,比如一台Apache和一台nginx,或者一台Apache和一台Lighttpd,会容易得多,因为它们的配置文件不会相互冲突。只需将其中一个设置为端口80,另一个设置为端口8080,然后同时启动它们。

投票决定迁移到StackOverflow。那么可能吗?不知道是谁编辑了我的问题。它在那里以-2票关闭。(皱眉)。。。民主!当你说便携式的时候。。。您希望在哪里重新部署此功能?它需要多大的跨平台性?我有一个服务器在ubuntu 12.04.1上。。。它目前正在运行一个灯组。。。我想在8080端口运行PHP5.4。。。仅限Linux。是的,binging和Google给了我WebStatic的想法,但最终我不得不在两者之间做出选择…WebStatic的PHP是CentOS/RHEL上的替换,它故意与基本软件包冲突,因此不适合这种情况。问题是。。。当我从targz文件(从他们的网站)安装php5.4时,它实际上覆盖(升级)了我不想要的现有php。PHP5.4有自己的服务器,我们可以使用
php-S[domainname]:8080运行它。问题是,我不能在一台机器上安装两个版本。。。我希望有PHP5.4服务器运行(在那里我已经为将来的发行版准备了我的应用程序)和其他网站。。。拥有多台服务器对我来说不是一个选项:)Thinks???您不必将PHP提取到默认位置。使用
mkdir/opt/php54
,然后
tar-C/opt/php54…
将新PHP提取到该位置。然后你可以在那里使用它。还请注意,PHP内置服务器不建议正常使用,因为它无法一次处理多个请求(包括静态JS、图像和CSS文件)。它是用于小项目的短期测试。是的,用于测试。。。更像是我们上线之前的测试版。。。我们快到了。。。我知道我可以提取到任何位置,但该位置需要我运行ofc sudo的
/configure
make
make install
。但是,当我进行安装时,它会升级我现有的php。。。我希望现在问题清楚了?太棒了!谢谢:)