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

Deb*_*his 8 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
Run Code Online (Sandbox Code Playgroud)

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

AddHandler x-mapp-php6 .php
Run Code Online (Sandbox Code Playgroud)

常见问题网址:

有没有办法只使用PHP 5.4.5的那些特定文件?

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

AddType x-mapp-php5 .php
AddHandler x-mapp-php6 FilenameController.php
Run Code Online (Sandbox Code Playgroud)

编辑

我试着编辑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>
Run Code Online (Sandbox Code Playgroud)

如果我将FilenameController.php的文件名更改为FilenameController.php6,并且当我尝试访问其生成的页面时,会生成404"找不到页面"错误.

Ter*_*ryE 5

为什么不呢

AddHandler x-mapp-php6 .php6
Run Code Online (Sandbox Code Playgroud)

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

RewriteEngine On
RewriteBase   /
RewriteRule   ^FilenameController\.php$   FilenameController.php6 [L]
Run Code Online (Sandbox Code Playgroud)

这为该一个脚本文件的.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编译其余部分.