2012-08-17 12 views
8

Ich habe eine Website (basierend auf ZEND-Framework) und gehostet auf 1and1 Server.So verwenden Sie separate PHP-Version für verschiedene PHP-Dateien

1and1 Server verwendet PHP Version 5.2.17 und 5.4.5. Ich muss PHP Version 5.4.5 nur für ein paar Dateien verwenden. Dies liegt daran, dass einige meiner anderen Dateien Fehler anzeigen, wenn ich PHP 5.4.5 verwende, aber sie funktionieren gut mit PHP 5.2.17.

Auf meinem .htaccess die Zeile Datei unten früher geschrieben wurde PHP 5.2.17

AddType x-mapp-php5 .php 

zu nutzen zu verwenden PHP 5.4.5 Ich habe unten (Anweisungen, um die die Zeile verwenden, um diesen Code zu verwenden, wird gefunden auf der 1und1 FAQ Seite)

AddHandler x-mapp-php6 .php 

FAQ url (e):

Gibt es einen Weg, um PHP zu verwenden 5.4.5 für diese spezifischen Dateien nur?

Ich habe versucht, die Linie unten in .htaccess zu verwenden, aber es funktioniert nicht:

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

EDIT

ich den 5.2 Code zu bearbeiten versucht. Ich verwende PEAR-Pakete Excel-Tabelle zu erstellen, die mit PHP 5.2.17 funktioniert prima, aber den Fehler unten auf PHP 5.4.5

Fatal error: Cannot redeclare _PEAR_call_destructors()

Nachtrag

Diese Änderung der .htaccess Datei

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> 
Anzeigen

generiert 404 "Seite nicht gefunden" Fehler, wenn ich den Dateinamen von FilenameController.php in FilenameController.php6 ändern und wenn ich versuche, die Seite zu besuchen, die Generierung.

+11

Warum reparieren Sie nicht Ihre PHP 5.2-Code mit einer unterstützten Version von PHP zu arbeiten? – Leigh

+0

Ich werde benötigt, um an 5-6 Dateien zu arbeiten, um wieder zu beheben. Wenn ich keine Lösung für die Verwendung der separaten PHP-Version erhalte, habe ich keine andere Möglichkeit, als an diesen Dateien zu arbeiten. – Debashis

+0

Dies wäre eine schlechte Idee, auch wenn Ihre Dateien unabhängig wären, aber Sie verwenden ein Framework, was bedeutet, dass sie voneinander abhängig sind. Was passiert, wenn eine Anfrage Dateien von diesen beiden Gruppen benötigt? Korrigieren Sie Ihren Code so, dass er mit einer einzigen Version funktioniert. – Maerlyn

Antwort

5

Warum nicht einfach

AddHandler x-mapp-php6 .php6 

und benennen Sie Ihre 5.4-Skripte php6? Sie können auch diese von dem Benutzer ausblenden, indem Sie die folgenden in Ihrer .htaccess Datei tun:

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

Dies hat eine interne Richtung auf eine .php6 Erweiterung für diese eine Skriptdatei. :-)

Lassen Sie mich jedoch betonen: Sie können nur wählen, welche Scripting-Engine auf einer pro Anfrage Basis nicht auf einer Basis pro Datei verwendet werden soll. Zum Beispiel: http:/yourdomain.com/FilenameController.php wird von PHP 5.4 RTS behandelt und alle enthaltenen Dateien werden mit PHP 5.4 kompiliert und ausgeführt; http:/yourdomain.com/index.php wird von PHP 5.2 RTS verarbeitet und alle enthaltenen Dateien werden mit PHP 5.2 kompiliert und ausgeführt.

Sie können 5.4 nicht verwenden, um eine Datei innerhalb einer Anwendung zu kompilieren, und 5.2, um den Rest zu kompilieren.

+0

Ist auf diese Weise nicht gelungen. Hinzugefügt diese Linie ein auf .htaccess 'code'AddType x-MAPP-php5 .php AddHandler x-MAPP-php6 .php6 SetEnv APPLICATION_ENV Entwicklung Optionen -MultiViews RewriteEngine On RewriteBase/ RewriteRule^FilenameController \ .php $ FilenameController.php6 [L] RewriteCond% {REQUEST_FILENAME} -s [OR] RewriteCond% {REQUEST_FILENAME} -l [OR] RewriteCond% {} REQUEST_FILENAME RewriteRule -d^* $ -. [ NC, L] RewriteRule ^. * $ index.php [NC, L] Debashis

+0

Nach den Dateinamen des FilenameControlle Ändern r.php zu FilenameController.php6, immer wenn ich versuche, die Seite zu besuchen, die 404 erzeugt Fehler und Anzeige "Seite nicht gefunden". – Debashis

+0

Gibt es keinen anderen Weg? – Debashis

1

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

Ich wäre neugierig auf die Details dieser.

Angenommen, Sie PHP als Apache-Modul ausgeführt (mod_php), können Sie nur eine Version zu einem Zeitpunkt auf die gleiche Installation von Apache ausgeführt haben. Sind Sie sicher, dass Ihr Server es sogar erlaubt, beide gleichzeitig zu verwenden? Wahrscheinlich können Sie Apache neu starten und es mit einer anderen Version ausführen. Wenn das der Fall ist, können Sie sich nicht wirklich darauf einstellen, damit Sie nicht php over cgi einrichten. stattdessen

+0

Bitte werfen Sie einen Blick in diese. A) http://faq.1and1.com/scripting_languages_supported/php/6.html und B) http://faq.1and1.com/scripting_languages_supported/php/7.html – Debashis

+0

OK. Sie scheinen PHP über cgi ('Server API: CGI/FastCGI') auszuführen. In diesem Fall ist es möglich, obwohl ich nicht weiß, was die Besonderheiten wären. – troelskn

Verwandte Themen