PHP командной строки mysql_connect () Ошибка - PullRequest
6 голосов
/ 25 февраля 2011

Я запускаю страницу php из командной строки для обновления базы данных mysql после завершения выполнения команды php exec. Это работает хорошо.

Однако я только что переустановил свой сервер, и теперь скрипт возвращает следующую ошибку при запуске в командной строке:

Fatal error: Call to undefined function mysql_connect() 

Скрипт отлично работает в браузере, что означает, что mysql установлен нормально. Как включить запуск mysql в PHP из командной строки?

Большое спасибо.

Ответы [ 4 ]

11 голосов
/ 25 февраля 2011

Прежде всего, вы можете использовать

php -m

из командной строки, чтобы проверить, какие расширения включены.

Если mysql отсутствует в списке, это означает, что он не включен / не загружен - что, вероятно, имеет место, здесь.


Тогда вы захотите использовать

php --ini

, чтобы проверить, какие .ini файлы считываются / читаются PHP.


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

; configuration for php MySQL module
extension=mysql.so

Для загрузки расширения mysql.


В зависимости от вашего дистрибутива, это может быть .ini файл на расширение (например, Ubuntu) .

Если это так, вы можете также создать новый файл .ini (например, mysql.ini) рядом с другими и поместить две строки, которые я разместил, в этот новый файл.

4 голосов
/ 25 февраля 2011

Проверьте путь к вашему исполняемому файлу PHP. Вы не упомянули, под какой ОС это находится, но, например, под OSX просто запуск php запускает встроенный интерпретатор PHP. Если вы используете MAMP, вам нужно запустить /Applications/MAMP/bin/php5.2/bin/php (или какой-либо другой путь), чтобы имитировать то, что работает в вашем браузере.

Соответственно измените путь к php вашего веб-сервера (в зависимости от установки AMP, ОС и т. Д.).

0 голосов
/ 29 марта 2015

Для меня ответ состоял в том, чтобы изменить первую строку в моем скрипте с '#! / Usr / bin / php' на '#! / Usr / bin / php -c /etc/php.ini'.

Несмотря на то, что php --ini указал, что он обрабатывает правильный файл .ini, это не так, поэтому мне пришлось принудительно ввести его в строку заголовка скрипта.

0 голосов
/ 25 февраля 2011

Недавно у меня была похожая проблема (возможно, это та же проблема для вас):

Я указал свой предпочитаемый php.ini в конфиге Apache. Однако это, очевидно, не влияет на php в CLI. Проверьте, какой php.ini используется php: php --ini. Либо измените его, либо выберите другой файл конфигурации, изменив некоторые из них:

php.ini ищется в этих местах (по порядку):

  • Специфичное расположение модуля SAPI (директива PHPIniDir в Apache 2, параметр командной строки -c в CGI и CLI, параметр php_ini в NSAPI, переменная среды PHP_INI_PATH в THTTPD)

  • Переменная среды PHPRC. До PHP 5.2.0 это проверялось после ключа реестра, указанного ниже.

  • Начиная с PHP 5.2.0, местоположение файла php.ini может быть задано для разных версий PHP. Следующие ключи реестра рассматриваются в следующем порядке: [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz], [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy] и [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x], где x, y и z означают мажор PHP, минорные и релизные версии. Если в этих ключах есть значение для IniFilePath, то первое найденное будет использоваться в качестве местоположения php.ini (только для Windows).

  • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP], значение IniFilePath (только для Windows).

  • Текущий рабочий каталог (кроме CLI)

  • Каталог веб-сервера (для модулей SAPI) или каталог PHP (в противном случае в Windows)

  • Каталог Windows (C: \ windows или C: \ winnt) (для Windows) или параметр времени компиляции --with-config-file-path

Я только что изменил переменную среды PHPRC для моего предпочтительного местоположения php.ini.

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