PHP командной строки mysql_connect() Ошибка

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

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

Fatal error: Call to undefined function mysql_connect() 

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

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

4 ответа

Решение

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

php -m

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

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


Затем вы захотите использовать

php --ini

чтобы проверить какие .ini Файл (ы) читается / читается PHP.


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

; configuration for php MySQL module
extension=mysql.so

Чтобы загрузить mysql расширение.


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

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

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

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

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

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

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

Я указал свой предпочитаемый 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,

Другие вопросы по тегам