2012-08-17 39 views
8

Ho un sito (basato su framework ZEND) e ospitato su server 1and1.Come utilizzare la versione php separata per diversi file php

Il server 1and1 utilizza PHP versione 5.2.17 e 5.4.5. Ho bisogno di usare la versione 5.4.5 di PHP solo per pochi file. Questo perché alcuni dei miei altri file mostrano un errore se uso PHP 5.4.5 ma eseguono bene usando PHP 5.2.17.

Sul mio .htaccess presentare la linea di seguito è stato scritto in precedenza da utilizzare PHP 5.2.17

AddType x-mapp-php5 .php 

Per utilizzare PHP 5.4.5 devo usare la riga sottostante (istruzioni per utilizzare questo codice sarà sulla pagina 1and1 faq)

AddHandler x-mapp-php6 .php 

FAQ url (s):

C'è un modo per utilizzare PHP 5.4.5 per solo i file specifici?

ho cercato di utilizzare la linea di seguito in .htaccess, ma non funziona:

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

EDIT

ho provato a modificare il codice 5.2. Sto usando pacchetti PEAR per creare foglio di Excel che sta lavorando bene con PHP 5.2.17, ma la visualizzazione l'errore sotto su PHP 5.4.5

Fatal error: Cannot redeclare _PEAR_call_destructors()

Addendum

Questa modifica al file di .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> 

genera 404 errore "Pagina non trovata" se cambio il nome file di FilenameController.php in Nome fileController.php6 e quando sto provando a visitare la pagina che sta generando.

+11

Perché non si fa a risolvere il vostro codice PHP 5.2 per funzionare con una versione supportata di PHP, invece? – Leigh

+0

Avrò bisogno di lavorare su 5-6 file di fissare di nuovo. Se non ottengo alcuna soluzione per utilizzare la versione separata di PHP, non avrò altro modo se non quello di lavorare su quei file. – Debashis

+0

Questo sarebbe una cattiva idea, anche se i file fossero indipendenti, ma si sta utilizzando un quadro, nel senso che dipendono dalla vicenda. Cosa succede se una richiesta richiede file da entrambi i gruppi? Risolvi il tuo codice per lavorare con una singola versione. – Maerlyn

risposta

5

Perché non solo

AddHandler x-mapp-php6 .php6 

e rinominare i tuoi 5.4 script per php6? È anche possibile nascondere questo da parte dell'utente facendo quanto segue nel file .htaccess:

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

Ciò una direzione interna per un'estensione .php6 per quel file uno script. :-)

Tuttavia, vorrei sottolineare: si può solo scegliere quale motore di scripting da utilizzare su un basi per richiesta non su una base per file. Ad esempio: http:/yourdomain.com/FilenameController.php verrà gestito da PHP 5.4 RTS e tutti i file inclusi verranno compilati ed eseguiti utilizzando PHP 5.4; http:/yourdomain.com/index.php sarà gestito da PHP 5.2 RTS e tutti i file inclusi saranno compilati ed eseguiti utilizzando PHP 5.2.

Non è possibile utilizzare 5.4 per compilare su file all'interno di un'applicazione e 5.2 per compilare il resto.

+0

Non ha avuto successo in questo modo. Aggiunto questi linea uno sul htaccess 'code'AddType x-MAPP-php5 .php AddHandler x-MAPP-php6 .php6 SetEnv APPLICATION_ENV sviluppo Opzioni -MultiViews 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] Debashis

+0

Dopo aver modificato il nome file di FilenameControlle r.php in FilenameController.php6, ogni volta che cerco di visitare la pagina genera errore 404 e mostra "Pagina non trovata". – Debashis

+0

Non c'è altro modo? – Debashis

1

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

Sarei curioso di sapere i dettagli di questo.

Supponendo che si esegue PHP come modulo di Apache (mod_php), si può avere una sola versione in esecuzione sulla stessa installazione di Apache alla volta. Sei sicuro che il tuo server ti permetta anche di usare entrambi allo stesso tempo? Più probabilmente, puoi riavviare Apache e farlo funzionare con una versione diversa. Se questo è il caso, non si può davvero configurare il modo per uscire da questo, perché non si desidera impostare php sopra cgi.

+0

Si prega di dare un'occhiata a questi. A) http://faq.1and1.com/scripting_languages_supported/php/6.html e B) http://faq.1and1.com/scripting_languages_supported/php/7.html – Debashis

+0

OK. Sembrano eseguire php attraverso cgi ('Server API: CGI/FastCGI'). In tal caso è possibile, anche se non so quali sarebbero le specifiche. – troelskn

Problemi correlati