2010-08-22 17 views
7

He estado luchando para que mi sitio CakePHP funcione en una cuenta de Godaddy "grid hosting". La aplicación My Cake está configurada desde un subdirectorio en la cuenta y se puede acceder a través de un subdominio. Tuve que ajustar mis archivos .htaccess para que funcionara, y ahora necesito que la consola CakePHP funcione en este entorno.Consola CakePHP en Godaddy Hosting

Tengo la misma configuración de aplicación de tortas en un servidor Ubuntu alojado en el servicio EC2 de Amazon. Básicamente una configuración lista para usar de Ubuntu LAMP. La consola de CakePHP funciona como se espera en este entorno.

Cuando trato de ejecutar la consola en GoDaddy me sale el siguiente mensaje:

CakePHP Consola: Este archivo se ha cargado correctamente y no puede continue.Please asegurarse de que/torta/consola está en su sistema de ruta, y compruebe el manual para el uso correcto de este comando . (http://manual.cakephp.org/)

he empezado a añadir algo de código en la depuración de la torta/consola/cake.php para averiguar lo que está pasando . En el sitio de GoDaddy, cuando hago eco en print_r($this->args) en la línea 183, veo que la matriz está vacía. Cuando hago esto en mi instancia EC2 Ubuntu me sale esto:

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

Parece que la línea de comandos de GoDaddy PHP no está pasando a través de los argumentos de línea de comandos shell bash. ¿Alguien tiene algún consejo sobre cómo puedo hacer que funcione la consola CakePHP en Godaddy?

La escritura del golpe que invoca la cáscara de la torta contiene la siguiente

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

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

exit; 

Pienso que la modificación de este script puede resolver el problema.

+1

los argumentos de la línea de comandos no se están pasando ... no estoy seguro de la causa de esto ... Y en la parte superior de cake.php hay una ruta a/usr/bin/php, pero esta se encuentra en/usr/local/bin/php en Godaddy. Puedo solucionar esto probablemente. – the0ther

+1

bien, register_argc_argv está desactivado, esta es probablemente la razón por la cual los parámetros de la línea cmd no se están pasando. – the0ther

Respuesta

1

No creo que editar nada en el lib/cake sea correcto, ya que se habrá ido con la actualización de su primer pastel.

Más bien, he cambiado la configuración del php.ini register_argc_argv añadiendo la línea:

register_argc_argv=On 

Todo parece funcionar ahora conmigo.

+0

Esto funcionó para mí usando el editor WHM php.ini. Actualicé a PHP7 y la actualización cambió la directiva. (Easy Apache 4). –

1

"Asegúrese de que/cake/console esté en la ruta del sistema".

Este es el alojamiento de la red, así que supongo que tiene un archivo .bashrc que puede editar. En primer lugar usted necesita saber la ruta absoluta a su pastel subdirectorio luego usar vim o nano para editar su .bashrc

PATH = $ PATH:/absoluta/ruta/a/torta/consola

A continuación, puede cierre la sesión y vuelva a iniciar sesión y podrá escribir Cake Bake desde cualquier lugar y debería corregir el error que obtiene (ejecutarlo desde el directorio de la aplicación para que pueda encontrar su database.php).

A falta de un archivo .bashrc puede exportar la variable temporal, sino que tendrá que escribirla cada vez que se conecte.

+0

parece que mi RUTA es correcta. cuando hago eco de PATH en la línea cmd parece correcto, y puedo ejecutar el comando cake desde cualquier directorio, obteniendo siempre el mensaje "Este archivo se ha cargado incorrectamente". – the0ther

12

en el script de shell torta (pastel/consola/torta) cambiar

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]" 

después de esto descubrí que llamar a php como esto sucedió para ejecutar la CLI de PHP 4.para solucionar este problema aquí es la escritura del golpe final que estoy usando para invocar PHP 5 en mi GoDaddy alojamiento compartido

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

si configuración de una tarea programada basada en PHP a través de su panel de control de alojamiento, se encuentra el comando php invocado es en realidad a este ejecutable php5.

+0

¿Puedes explicar el razonamiento detrás de 'register_argc_argv = 1'? ¡Eso seria genial! – mgPePe

+1

es una forma de que PHP declare "buscaré los parámetros de la línea de comando entrante". ver: http://php.net/manual/en/ini.core.php#ini.register-argc-argv – the0ther