php - mysql_select_db - mysqli_connect
PHP: mysql_connect() no funcionará a través de la línea de comandos (7)
Este problema puede surgir cuando ejecuta Mac OS X y MAMP. La versión de línea de comando intenta usar la versión MAC OS X, que no carga ningún php.ini por defecto.
Puede verificarlo con el comando:
php --ini
Ver el archivo de configuración faltante?
Configuration File (php.ini) Path: /etc
Loaded Configuration File: !!! THE CONFIG FILE IS MISSING HERE !!!
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed: (none)
Lo que tienes que hacer es cargar el php.ini que elijas y copiarlo en la ubicación predeterminada de tu intérprete de línea de comando que es / etc y luego ejecutar nuevamente el comando anterior, verás que el archivo php.ini es cargado que debería verse así:
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed: (none)
También debe agregar esto al archivo PHP.ini en / etc
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
Esto debería solucionar todos los problemas.
Uf..
Tengo una secuencia de comandos que llama a mysql_connect()
para conectarse a una base de datos MySQL. Cuando ejecuto el script en un navegador, funciona. Sin embargo, cuando lo ejecuto desde una línea de comando recibo el siguiente error:
Call to undefined function mysql_connect()
Esto parece completamente paradójico. Alguien tiene alguna idea de cómo puedo ejecutarlo desde la línea de comandos. Por cierto, lo ejecuto desde un shell bash como así:
php /path/to/script.php
Comprueba si tu versión de php cmd realmente tiene soporte para mysql:
<? php echo php_info() ?>
De lo contrario, probablemente sea porque es una versión diferente a la utilizada por su servidor web.
Ejecute php usando el parámetro "-m" para listar todos los módulos compilados:
$ php -m
Debería ver el módulo "mysql". Si no es así, entonces supongo que la versión del cmd de php no se ha compilado utilizando el script --with-mysql o el guión "configurar" no podría incluirlo por algún motivo.
Por favor, asegúrese de que esta línea aparezca en php.ini
extension = php_mysql.dll
Tenga en cuenta que el php.ini utilizado en la línea de comandos puede ser diferente del php.ini utilizado por apache.
Si bien puede ser una respuesta rudimentaria, asegúrese de tener el cliente PHP más actualizado, y asegúrese de que está buscando en la misma carpeta PHP que está trabajando a través de Apache.
Si eso no funciona, intente jugar con mysqli y vea si es globalmente para toda la parte de MySQL de PHP. Si mysqli funciona y mysql_connect () no, bueno, entonces es un buen momento para cambiar al lado OO :-)
Tal vez usando una configuración PHP predeterminada. He encontrado antes que no usa el mismo php.ini o no usa uno en absoluto. Por lo tanto, algunas de las extensiones no estarán habilitadas.
Haz esto en su lugar:
php -c /etc/php.ini /path/to/script.php
Donde /etc/php.ini
es la ruta a su archivo ini. Puede encontrar esto haciendo un phpinfo();
php-cli.ini podría ser el archivo que está usando su intérprete de línea de comandos php.
Mi sistema es CentOS. En mi caso, el camino a mysql.so es incorrecto.
Cuando escribo
php -m
No hay mysql.
En mi /etc/php.d/mysql.ini original, solo hay una línea:
extension=mysql.so
Entonces uso el comando:
rpm -ql php-mysql | grep mysql.so
para descubrir el camino correcto, que es
/usr/lib64/php/modules/mysql.so
luego reemplacé la línea a:
extension=/usr/lib64/php/modules/mysql.so
entonces
service httpd restart
y
php -m
mysql ahora está cargado.