2012-08-17 16 views
8

私はサイトを持っています(ZENDフレームワークに基づいています)、1and1サーバーでホストされています。別のphpファイルに別のPHPバージョンを使用する方法

1and1サーバは、PHPバージョン5.2.17および5.4.5を使用します。私はいくつかのファイルのためのPHPのバージョン5.4.5を使用する必要があります。これは、私がPHP 5.4.5を使用していても、PHP 5.2.17を使用して正常に実行された場合、他のいくつかのファイルにエラーが表示されるためです。私の.htaccessファイルで

行の下には、PHP 5.4.5を使用するにはPHP 5.2.17

AddType x-mapp-php5 .php 

を使用するために以前に書かれた私は(命令はこのコードを使用することで、以下の行を使用する必要があります1and1のFAQページにあります)

AddHandler x-mapp-php6 .php 

よくある質問URL(S):

のみ、特定のファイルのためのPHP 5.4.5を使用する方法はありますか?

私は.htaccessファイルに以下の行を使用しようとしましたが、それは働いていない:私は5.2のコードを編集しようとした

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

EDIT

を。私は.htaccessファイルに補遺

この変更

Fatal error: Cannot redeclare _PEAR_call_destructors()

PHP 5.4.5に

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> 
をPHP 5.2.17で正常に動作しているExcelシートを作成するために、PEARパッケージを使用したが、下のエラーを表示しています

は、FilenameController.phpのファイル名をFilenameController.php6に変更すると、そのページにアクセスしようとしているときに404のページが見つかりませんでした。

+11

代わりにサポートされているバージョンのPHPで動作するようにPHP 5.2コードを修正しないでください。 – Leigh

+0

私は再び修正するために5-6ファイルを処理する必要があります。別のPHPバージョンを使用するための解決策がない場合は、他の方法はありませんが、これらのファイルを処理します。 – Debashis

+0

これはあなたのファイルが独立していてもフレームワークを使用している場合でも悪い考えです。つまり、相互に依存しています。リクエストにこれらの両方のグループのファイルが必要な場合はどうなりますか?単一のバージョンで動作するようにコードを修正します。 – Maerlyn

答えて

5

なぜだけではなく、

AddHandler x-mapp-php6 .php6 

そしてPHP6にあなたの5.4スクリプトの名前を変更?あなたもあなたの.htaccessファイルに次のようにして、ユーザからこれを非表示にすることができます:

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

これは、1つのスクリプトファイルの拡張子.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を使用することはできません。

+0

この方法では成功しませんでした。 でRewriteBase/ のRewriteRuleでのhtaccess 'code'AddTypeは、X-MAPP-PHP5の.php のAddHandler X-MAPP-PHP6 .php6 するSetEnv APPLICATION_ENV開発 オプション-MultiViews <のIfModule mod_rewrite.c> RewriteEngineにこれらの行1を追加しました^ FilenameController \の.php $ FilenameController.php6 [L] するRewriteCondの%{REQUEST_FILENAMEは} -s [OR] {REQUEST_FILENAME} -1- [OR] するRewriteCondの%{REQUEST_FILENAME} のRewriteCond%が のRewriteRuleを-d^* $ - [ NC、L] RewriteRule ^。* $ index.php [NC、L] – Debashis

+0

FilenameControlleのファイル名を変更した後r.phpをFilenameController.php6に変更すると、そのページに404エラーが表示され、「ページが見つかりません」と表示されるたびに表示されます。 – Debashis

+0

他に方法はありますか? – Debashis

1

1and1 server uses PHP version 5.2.17 and PHP version 5.4.5.

私はこの詳細について興味があります。

Apacheモジュール(mod_php)としてphpを実行していると仮定すると、一度に同じバージョンのApacheで同じバージョンのApacheを実行できます。あなたのサーバが同時に両方を使用できることを確信していますか?おそらく、Apacheを再起動して別のバージョンで動作させることができます。そのような場合には、実際にこの方法から脱出するように設定することはできません.cgiを使ってPHPをセットアップする必要がないようにしてください。

+0

これらを調べてください。 A)http://faq.1and1.com/scripting_languages_supported/php/6.htmlとB)http://faq.1and1.com/scripting_languages_supported/php/7.html – Debashis

+0

OK。彼らはCGI( 'Server API:CGI/FastCGI')を介してphpを実行するように見えます。その場合は具体的な内容はわかりませんが、可能です。 – troelskn

関連する問題