我有一个站点(基于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“找不到页面”错误。
答案 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。