PHP: mysql_connect () не будет работать через командную строку - PullRequest
11 голосов
/ 08 октября 2008

У меня есть скрипт, который вызывает mysql_connect() для подключения к базе данных MySQL. Когда я запускаю скрипт в браузере, он работает. Однако, когда я запускаю его из командной строки, я получаю следующую ошибку:

Call to undefined function mysql_connect()

Это кажется совершенно парадоксальным. У кого-нибудь есть какие-либо идеи о том, как я могу запустить его из командной строки. Кстати, я запускаю его из оболочки bash примерно так:

php /path/to/script.php

Ответы [ 7 ]

11 голосов
/ 08 октября 2008

Возможно, используется конфигурация PHP по умолчанию. Ранее я обнаружил, что он не использует тот же php.ini или не использует его вообще. Поэтому некоторые расширения не будут включены.

Сделайте это вместо:

php -c /etc/php.ini /path/to/script.php

Где /etc/php.ini - путь к вашему INI-файлу. Вы можете найти это, выполнив phpinfo();

3 голосов
/ 08 октября 2008

Проверьте, есть ли у вашей версии php cmd поддержка mysql:

 <? php
  echo php_info()
 ?>

Если нет, то, вероятно, это потому, что это версия, отличная от той, которая используется вашим веб-сервером.

Запустите php, используя параметр "-m", чтобы вывести список всех скомпилированных модулей:

  $ php -m

Вы должны увидеть модуль "mysql". Если нет, то я полагаю, что версия php cmd не была скомпилирована с использованием ключа --with-mysql, иначе скрипт «configure» не смог включить его по какой-то причине.

2 голосов
/ 08 октября 2008

Несмотря на то, что это может быть элементарный ответ, убедитесь, что у вас самый современный PHP-клиент, и убедитесь, что он просматривает ту же папку PHP, с которой вы работаете через Apache.

Если это не сработает, попробуйте поиграть с mysqli и посмотрите, глобально ли это для всей части MySQL PHP. Если mysqli работает, а mysql_connect () - нет, то это самое подходящее время для перехода на сторону OO: -)

1 голос
/ 08 октября 2008

Пожалуйста, убедитесь, что эта строка появляется в php.ini

расширение = php_mysql.dll

Обратите внимание, что php.ini, используемый в командной строке, может отличаться от php.ini, используемого apache.

1 голос
/ 08 октября 2008

php-cli.ini может быть файлом, который использует интерпретатор php командной строки.

0 голосов
/ 05 мая 2017

Моя система - CentOS. В моем случае путь к mysql.so неверен.

Когда я печатаю

php -m

MySQL не существует.

В моем оригинальном /etc/php.d/mysql.ini есть только одна строка:

extension=mysql.so

Поэтому я использую команду:

rpm -ql php-mysql | grep mysql.so

чтобы узнать правильный путь, который

/usr/lib64/php/modules/mysql.so

затем я заменил строку на:

extension=/usr/lib64/php/modules/mysql.so

, затем

service httpd restart 

и

php -m

MySQL теперь загружен.

0 голосов
/ 07 мая 2014

Эта проблема может возникнуть при использовании Mac OS X и MAMP. Версия командной строки пытается использовать версию MAC OS X, которая по умолчанию не загружает php.ini.

Вы можете проверить это с помощью команды:

php --ini

См. Отсутствующий файл конфигурации?

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)

Что вам нужно сделать, это загрузить php.ini по вашему выбору и скопировать его в каталог по умолчанию вашего интерпретатора командной строки, который является / etc, а затем снова запустить указанную команду, вы должны увидеть, что php. загружен INI-файл, который должен выглядеть следующим образом:

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)

Вы также должны добавить это в файл PHP.ini в / etc

mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock

Это должно решить все проблемы.

уф ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...