2011-10-14 32 views
9

Sono ospitato con 1and1.com e ho impostato i miei file per essere analizzati con php5 utilizzando .htaccess.Come posso forzare la versione PHP per Command Line?

Ma questo funziona solo in Apache, e non in riga di comando, che di default è il php4 predefinito del server.

Così attualmente non riesco a impostare cron jobs per eseguire il mio codice come php5. Qualche idea?

risposta

9

Se entrambi sono installati, tutto ciò che devi fare è eseguire lo script utilizzando il binario PHP pertinente.

Così, per esempio:

// Runs using the PHP binary located at /usr/bin/php 
* * * * * root /usr/bin/php -n "/path/to/script.php" 

o

// Runs using the PHP binary located at /var/php5 
* * * * * root /var/php5 -n "/path/to/script.php" 

Tutto quello che devi sapere è il percorso completo del file system dei binari PHP CLI, e chiamare il relativo quello di eseguire il codice.

1

ci devono essere due directory PHP e una di esse dovrebbe essere quella di default. prova a scoprire il percorso di php5 dalla radice del tuo server e usa il percorso completo nel tuo cron job.

+2

'whereis php' può aiutare a trovare i tuoi php-locations – Zombaya

+0

'quale php' o' quale php5.5-cli' come riga di comando 1and1 non ha 'whereis' – Abinadi

3

Se è possibile eseguire script PHP direttamente nella shell come:

$ script.php 

è possibile specificare il binario che verrà eseguito lo script nella sua prima linea:

#!/usr/bin/php 
<?php 

Quella linea si chiama shebang . La linea potrebbe essere diversa sul sistema, è necessario conoscere il percorso completo del file system del binario CLI PHP che si desidera utilizzare per tale script.

Se si esegue tale file nella shell, verrà utilizzato il binario specificato. Lo stesso per cron.

Se si esegue tale file tramite il server Web, PHP interromperà la linea in modo silenzioso.

Vedi pure:Features: Using PHP from the command line

0

Finalmente ho avuto questo lavoro. Il problema era un po 'ovvio.

In primo luogo, il PHP utilizzato era in/etc/bin invece della versione MAMP. Sono stato in grado di cambiare questo e utilizzare la versione MAMP invece.

In secondo luogo, per utilizzare php tramite la CLI è necessario assicurarsi di utilizzare il percorso FULL su php e non solo su php stesso. Cioè utilizzare /MAMP/bin/php/php5.3.x/php nella chiamata exec(). Questo ora sta funzionando per me.

È possibile controllare il mio GIST qui ... https: //gist.github.com/1861487

+0

Non è necessario utilizzare il percorso completo per php da eseguire in CLI (Avendo eseguito php dal terminale sul mio Mac usando MAMP, XAMPP e l'installazione di OSX, sono su re di questo.) Il motivo per cui l'hai fatto è stato (a seconda dell'errore che hai ricevuto): a) Non hai la directory bin nella variabile env PATH (che mi ottiene ogni volta), o b) hai più versioni di php installato e il primo nel percorso non era quello che volevi. Per il primo, è possibile confermare eseguendo quanto segue prima della chiamata php: 'PATH = $ PATH:/MAMP/bin' – Anthony

+0

Questo non risponde affatto alla domanda. OP stava chiedendo dell'ambiente 1and1, che non ha nulla a che fare con MAMP. – Abinadi

1

Questo è un altro approccio per forzare PHP da riga di comando a 1and1.

Entra con ssh sul server e creare un nuovo file chiamato .profile in là si scriverà la seguente riga alias php='/usr/local/bin/php5' Entra di nuovo in con ssh e verificare la versione di PHP con php -v si dovrebbe vedere la versione è ora 5.

10

in conformità a https://community.1and1.com/using-php-composer-at-1and1/, creare .profile nella vostra projet radice e aggiungere la riga:

alias php='/usr/bin/php5.5-cli' 

funziona per me. Login SSH e fare:

php -v 

Risultato:

PHP 5.5.32 (CLI) (costruita: Feb 15 2016 16:13:44)

+0

Questo! Bel lavoro, dicotout. Ottieni una stella d'oro per il giorno. – Abinadi