如何使用单独的PHP版本的不同的PHP文件

时间:2012-08-17 13:00:08

标签: php .htaccess

我有一个站点(基于ZEND框架)并托管在1and1服务器上。

1and1服务器使用PHP版本5.2.17和5.4.5。我需要将PHP版本5.4.5仅用于几个文件。这是因为如果我使用PHP 5.4.5,我的其他一些文件会显示错误,但是使用PHP 5.2.17它们可以正常运行。

在我的.htaccess文件中,下面的行是先前编写的,以使用PHP 5.2.17

AddType x-mapp-php5 .php

要使用PHP 5.4.5我必须使用下面的行(使用此代码的说明将在1and1常见问题页面上找到)

AddHandler x-mapp-php6 .php

常见问题网址:

有没有办法只将PHP 5.4.5用于那些特定文件?

我尝试在.htaccess中使用以下行,但它不起作用:

AddType x-mapp-php5 .php
AddHandler x-mapp-php6 FilenameController.php

修改

我尝试编辑5.2代码。我正在使用PEAR包来创建Excel表格,它在PHP 5.2.17中运行良好,但在PHP 5.4.5上显示以下错误

  

致命错误:无法重新声明_PEAR_call_destructors()

附录

.htaccess文件的更改

AddType x-mapp-php5 .php 
AddHandler x-mapp-php6 .php6 
SetEnv APPLICATION_ENV development 
Options -MultiViews 
<IfModule mod_rewrite.c> 
  RewriteEngine On 
  RewriteBase / 

  RewriteRule ^FilenameController\.php$ FilenameController.php6  [L] 

  RewriteCond %{REQUEST_FILENAME} -s [OR]
  RewriteCond %{REQUEST_FILENAME} -l [OR] 
  RewriteCond %{REQUEST_FILENAME} -d 
  RewriteRule ^.*$ - [NC,L] 

  RewriteRule ^.*$ index.php [NC,L] 
</IfModule>
如果我将FilenameController.php的文件名更改为FilenameController.php6,并且当我尝试访问其生成的页面时,

生成404“找不到页面”错误。

2 个答案:

答案 0 :(得分:5)

为什么不

AddHandler x-mapp-php6 .php6

并将您的5.4脚本重命名为php6?您甚至可以通过在.htaccess文件中执行以下操作来隐藏此用户:

RewriteEngine On
RewriteBase   /
RewriteRule   ^FilenameController\.php$   FilenameController.php6 [L]

这是对该脚本文件的.php6扩展的内部指示。 : - )

但是,请允许我强调:您只能在每个请求的基础上选择使用哪个脚本引擎,而不是基于每个文件。例如:http:/yourdomain.com/FilenameController.php将由PHP 5.4 RTS处理,所有包含的文件将使用PHP 5.4进行编译和执行; http:/yourdomain.com/index.php将由PHP 5.2 RTS处理,所有包含的文件将使用PHP 5.2进行编译和执行。

您不能使用5.4在应用程序中编译文件,而5.2编译其余文件。

答案 1 :(得分:1)

  

1and1服务器使用PHP版本5.2.17和PHP版本5.4.5。

我很好奇这个细节。

假设您将php作为Apache模块(mod_php)运行,您一次只能在同一个Apache安装上运行一个版本。您确定您的服务器甚至允许同时使用它们吗?更有可能的是,您可以重新启动Apache并让它以不同的版本运行。如果是这种情况,你无法真正配置出来,以免你想在cgi上设置php。