2010-08-22 18 views
7

Ho faticato per far funzionare il mio sito CakePHP su un account di "grid hosting" di Godaddy. L'app della mia torta è configurata in una sottodirectory dell'account e può essere accessibile tramite un sottodominio. Ho dovuto adattare i miei file .htaccess per farlo funzionare, e ora ho bisogno di far funzionare la console di CakePHP in questo ambiente.CakePHP Console su Hosting Godaddy

Ho installato la stessa applicazione di torta su un server Ubuntu ospitato sul servizio EC2 di Amazon. Fondamentalmente una semplice configurazione Ubuntu LAMP. La console di CakePHP funziona come previsto in questo ambiente.

Quando provo a fare funzionare la console su Godaddy ottengo il seguente messaggio:

CakePHP Console: Questo file è stato caricato in modo errato e non può continue.Please fare in modo che/torta/console è nella tua sistema percorso e controllare il manuale per l'uso corretto di questo comando . (http://manual.cakephp.org/)

ho iniziato ad aggiungere qualche codice di debug a torta/console/cake.php per scoprire cosa sta succedendo . Sul sito di Godaddy, quando echo fuori print_r($this->args) alla riga 183, trovo che l'array è vuoto. Quando faccio questo nel mio caso Ubuntu EC2 ottengo questo:

Array 
(
    [0] => /var/www/www.directory.sdcweb.org/htdocs/cake/console/cake.php 
) 

Sembra di GoDaddy a linea di comando PHP non passa attraverso gli argomenti della riga di comando di shell bash. Qualcuno ha qualche consiglio su come posso far funzionare la console di CakePHP su Godaddy?

Lo script bash che invoca la shell torta contiene le seguenti

LIB=${0/%cake/} 
APP=`pwd` 

exec php -q ${LIB}cake.php -working "${APP}" "[email protected]" 

exit; 

Sto pensando che la modifica di questo script potrebbe risolvere il problema.

+1

gli argomenti della riga di comando non vengono passati in ... non sono sicuro la causa di questo ... E in cima cake.php c'è un percorso/usr/bin/php ma questo si trova in/usr/local/bin/php su Godaddy. Posso aggirare questo probabilmente. – the0ther

+1

bene, register_argc_argv è impostata su No, questo è probabilmente il motivo per cui i params linea cmd non vengono passati in. – the0ther

risposta

1

Non credo che la modifica nulla nella cartella lib/torta va bene, dal momento che sarà andato con il tuo primo aggiornamento torta.

Piuttosto, ho cambiato l'impostazione register_argc_argv dal php.ini aggiungendo la riga:

register_argc_argv=On 

Tutto sembra funzionare ora con me.

+0

Questo ha funzionato per me usando l'editor php.ini WHM. Mi ero aggiornato a PHP7 e la direttiva è stata modificata dall'aggiornamento. (Facile Apache 4). –

1

"Accertarsi che/cake/console si trovi nel percorso di sistema."

Questo è il grid hosting quindi presumo che tu abbia un file .bashrc che puoi modificare. In primo luogo è necessario conoscere il percorso assoluto per il vostro sub-directory torta quindi utilizzare vim o nano per modificare il .bashrc

PATH = $ PATH:/assoluto/path/to/torta/console

Poi si può disconnettersi e ricollegarsi e si dovrebbe essere in grado di digitare cake bake da qualsiasi luogo e dovrebbe correggere l'errore che si ottiene (eseguirlo dalla directory dell'app in modo che possa trovare il database.php).

In mancanza di un file .bashrc è possibile esportare la variabile temporaneamente, ma si dovrà digitare ogni volta che si accede.

+0

sembra che il mio percorso sia corretto. quando echo PATH nella riga cmd sembra corretto, e posso eseguire il comando di torta da qualsiasi directory, ricevendo sempre il messaggio "Questo file è stato caricato in modo errato". – the0ther

12

nello script di shell torta (torta/console/torta) cambiare

exec php -q ${LIB}cake.php -working "${APP}" "[email protected]" 

a

exec php -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "[email protected]" 

dopo questo ho scoperto che chiamando php come questo è accaduto per eseguire il CLI PHP 4.per risolvere questo problema qui è lo script bash finale che sto usando per invocare PHP 5 sul mio Godaddy hosting condiviso

exec /web/cgi-bin/php5 -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "[email protected]" 

se si imposta un processo di cron php-based attraverso il pannello di controllo hosting, si trova il comando php invocato è in realtà a questo eseguibile di php5.

+0

Puoi spiegare il ragionamento alla base di 'register_argc_argv = 1'? Sarebbe grandioso! – mgPePe

+1

è un modo per PHP di dichiarare "cercherò i parametri della riga di comando in entrata". vedi: http://php.net/manual/en/ini.core.php#ini.register-argc-argv – the0ther

Problemi correlati