Я запускаю php-страницу из командной строки для обновления mysql-db после завершения команды php exec. Это работает нормально.
Тем не менее, я только что переустановил свой сервер, и теперь скрипт возвращает следующую ошибку, когда я запускаю ее в командной строке:
Fatal error: Call to undefined function mysql_connect()
Скрипт отлично работает в браузере, что означает, что mysql установлен OK. Как включить mysql в PHP для запуска из командной строки?
Большое спасибо.
Прежде всего, вы можете использовать
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
(или что бы вы ни /Applications/MAMP/bin/php5.2/bin/php
), чтобы подражать тому, что работает в вашем браузере.
Измените путь к php вашего веб-сервера (на основе установки AMP, ОС и т. Д.).
У меня была аналогичная проблема совсем недавно (может быть, для вас такая же проблема):
Я указал свой предпочитаемый 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 compile time
Я только что изменил переменную среды PHPRC в мое предпочтительное расположение php.ini
.
Для меня ответ заключался в том, чтобы изменить первую строку в моем скрипте с '#! / Usr / bin / php' на '#! / Usr / bin / php -c /etc/php.ini'.
Несмотря на то, что «php -ini» указал, что он обрабатывает правильный .ini-файл, это не так, поэтому мне пришлось принудительно его на строку заголовка скрипта.