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
,