Intereting Posts
почему нам все еще нужен родительский конструктор, когда класс контроллера расширяет родительский контроллер? PHP – Как установить драйвер PDO? (Windows) Как создать собственный фасад в Laravel 4 Данные теряются во время $ .post php URL – заменить знак вопроса и параметр слэш Почему этот массив не работает так, как ожидалось? Преобразование символов Unicode в эквивалентные ASCII-символы Как проверить, существует ли класс в пространстве имен? Назначение переменных и отображение результатов Лучший способ удалить строки mysql из html-страницы – удалить ссылку и php Как использовать LIKE для поиска mysql с помощью JOIN и ORDER По количеству большинства строк / голосов в таблице голосования? Какая версия PHP считается «стандартной» для большинства веб-хостов? Тип возврата «self» в абстрактном классе PHP Настройка нескольких языков wordpress Путаница с идентификатором «use» при закрытии PHP

Командная строка php mysqli терпит неудачу, но работает через веб-сервер и работает в локальной

У меня есть сценарий оболочки, который вызывает PHP-скрипт для вставки записей в базу данных после разбора текстового файла. Когда он вызывает PHP-скрипт, я получаю ошибки, которые не могут найти mysqli:

PHP Fatal error: Class 'mysqli' not found in /path/to/php/file.php on line 5 

Это не удалось в локальном режиме на Macbook Pro с Nginx и PHP-FPM и Mysql 5.5.x, и после того, как я добавил параметр socket для вызова mysqli, он работал локально. Это работало с локальным db!

 $mysqli = new mysqli("localhost", "user", "pass", "mydb", 3306, "/tmp/mysql.sock"); 

Я развернулся на сервере Linux (CentOS6, на котором установлена ​​«yum install php» с PHP 5.3.x). Я изменил соединение с удаленным сервером db, поэтому отключил «/tmp/mysql.sock», потому что db не работает на этом сервере.

Сценарий оболочки, вызывающий php для выполнения скрипта:

 php -c "/etc/php.ini" -f "/path/to/php/file.php" 

Учитывая, что я не запускаю mysql локально, как мне получить его, чтобы распознать mysqli lib и выполнить. Это на CentOS6. Я даже попытался добавить mysqli.so в файл php.ini и получил следующую ошибку:

 [mike@app2 myapp]# php -version PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - /usr/lib64/php/modules/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP 5.3.3 (cli) (built: Feb 2 2012 23:47:49) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 

Спасибо за любую помощь, разрешающую это. Обычно я использовал mysql (query), но мне нужно mysqli () для некоторых подготовленных операторов и других битов в скрипте.

Я обнаружил, что mysqli не был установлен с PHP и выполнял следующую команду:

 >php -i 

Это вернуло phpinfo () и не нашло упоминания о mysqli. Затем я запустил команду «yum» для установки php-mysqli:

 >yum install php-mysqli 

После этого скрипт работал успешно. Надеюсь, это поможет другим, которые могут столкнуться с подобными.

PHP CLI будет иметь собственную настройку среды, которая будет использоваться веб-сервером. Если вы не используете mysqli в среде CLI, это может вызвать эту проблему.