2011-02-25 16 views
6

Estoy ejecutando una página php desde la línea de comandos para actualizar un archivo mysql db una vez que se haya completado un comando php exec. Esto ha estado funcionando bien.Línea de comandos PHP mysql_connect() Error

Sin embargo, acabo de volver a instalar mi servidor y ahora la secuencia de comandos devuelve el siguiente error al ejecutarlo en la línea de comandos:

Fatal error: Call to undefined function mysql_connect() 

La secuencia de comandos se ejecuta correctamente en el navegador que significa MySQL está instalado OK . ¿Cómo habilito que mysql en PHP se ejecute desde la línea de comando?

Muchas gracias.

Respuesta

11

En primer lugar, puede utilizar

php -m 

desde la línea de comandos, para comprobar qué extensiones están habilitadas.

Si mysql no está en la lista, significa que no está habilitado/cargado - que probablemente sea el caso, aquí.


A continuación, tendrá que utilizar

php --ini 

para comprobar qué .ini archivo (s) es/son leídos por PHP.


Una vez que has descubierto el que se utiliza php.ini archivo, tendrá que editarlo y añadir algo como esto:

; configuration for php MySQL module 
extension=mysql.so 

Para cargar la extensión mysql.


Dependiendo de su distribución, el podría ser un archivo .ini por extensión (Ubuntu hace que, por ejemplo).

Si ese es el caso, también se puede crear un nuevo archivo de .ini (mysql.ini por ejemplo) al lado de los otros, y poner las dos líneas que he publicado en ese nuevo archivo.

+0

gracias por su respuesta. Lo intenté pero no tuve suerte. El problema es que cuando ejecuto php --ini en la CLI, declaro que mi archivo de configuración php.ini se encuentra en/usr/local/lib, que es incorrecto. Por favor vea mi nueva pregunta aquí: http://stackoverflow.com/questions/5132978/php-command-line-php-ini-path-error. – Kit

+0

Esto fue un salvavidas. Para mí, MySQL arrojaba un error de 'extensión no encontrada', pero solo cuando se ejecuta en la línea de comando y al agregar esta línea a php.ini se solucionó el problema. –

+0

Nota: Ahora que PHP7 está desactivado, asegúrese de que su línea de comando esté utilizando la misma instalación PHP que la que ha configurado. Usando 'php --ini' en la línea de comando noté que estaba usando PHP7 que aún no estoy usando en mis sitios. Al cambiar el comando de 'php/foo/bar.php' a' php5.6/foo/bar.php' corrigió el error – Ray

4

Compruebe la ruta a su ejecutable de PHP. No mencionaste en qué sistema operativo está esto, pero, por ejemplo, en OSX simplemente ejecutando php se ejecuta el intérprete PHP incorporado. Si está usando MAMP necesitará ejecutar /Applications/MAMP/bin/php5.2/bin/php (o cualquiera que sea su ruta) para imitar lo que se está ejecutando en su navegador.

Modifique la ruta del php de su servidor web como corresponda (según la instalación de AMP, el sistema operativo, etc.).

0

que tenía un problema similar hace poco tiempo (tal vez es el mismo problema para usted):

había determinado mi php.ini preferido en la configuración de Apache. Sin embargo, esto obviamente no afecta a php en CLI. Compruebe qué php.ini es utilizado por php: php --ini. Modifíquelo o elija un archivo de configuración diferente cambiando algunos de estos:

php.ini se busca en estos lugares (en orden): módulo de

  • SAPI ubicación específica (Directiva PHPIniDir en Apache 2, opción -c línea de comandos en CGI y CLI, el parámetro php_ini en NSAPI, variable de entorno PHP_INI_PATH en THTTPD)

  • La variable de entorno PHPRC. Antes de PHP 5.2.0 esto se verificó después de la clave de registro que se menciona a continuación.

  • A partir de PHP 5.2.0, la ubicación del archivo php.ini se puede establecer para diferentes versiones de PHP. Las siguientes claves de registro se examinan en orden: [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz], [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy] y [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x], donde x, y y z significan el PHP principal, versiones menores y versiones. Si hay un valor para IniFilePath en estas claves, entonces el primero encontrado se usará como la ubicación de php.ini (solo Windows).

  • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP], valor de IniFilePath (solo Windows).

  • directorio actual de trabajo (excepto CLI)

  • El directorio del servidor web (para módulos SAPI), o el directorio de PHP (de lo contrario en Windows)

  • directorio de Windows (C: \ Windows o C : \ WINNT) (para Windows), o --with-config-file-path opción de tiempo

he acaba de modificar la variable de entorno PHPRC de mi lugar preferido recopilar de php.ini.

0

Para mí, la respuesta fue cambiar la primera línea de mi script de '#!/Usr/bin/php' a '#!/Usr/bin/php -c /etc/php.ini'.

Aunque 'php --ini' indicó que estaba procesando el archivo .ini correcto, no lo estaba, así que tuve que forzarlo en la línea del encabezado del script.

Cuestiones relacionadas