PHP: mysql_connect () не будет работать через командную строку

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

 Call to undefined function mysql_connect() 

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

 php /path/to/script.php 

Solutions Collecting From Web of "PHP: mysql_connect () не будет работать через командную строку"

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

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

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

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

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

  <?  PHP
   echo php_info ()
  ?>

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

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

   $ php -m

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

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

Если это не сработает, попробуйте сыграть с mysqli и посмотрите, глобально ли это для всей части PHP PHP. Если mysqli работает, а mysql_connect () не подходит, ну, значит, это так же хорошо, как и любой swtich на стороне OO 🙂

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

Убедитесь, что эта строка отображается в php.ini

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

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

Эта проблема может возникнуть, если вы используете 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 

Это должно исправить каждую проблему.

уф ..

Моя система – 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 теперь загружен.