我有一个站点(基于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"找不到页面"错误.
为什么不呢
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编译其余部分.