Недавно я обнаружил, что расширение mysqli не установлено на моем сервере Centos версии 2.6. Подтверждаю, потому что меняю драйвер подключения к БД с mysqli
к mysql
и теперь работает нормально. Итак, есть ли другой способ / журнал определить эту проблему? потому что apache error_log ничего об этом не говорит.
Это действительно не проблема, но в будущем это может быть более сложным. Зачем? потому что при использовании драйвера mysqli веб-сайт умирает с пустой страницей без ошибок / предупреждений, чтобы помочь мне устранить неполадки. Мне не нравится идея обнаруживать проблемы с магическими искусствами или тестировать строку за строкой. Должен быть какой-то файл журнала, который поможет мне отладить его.
Чтобы предоставить информацию по этой проблеме, я сделал:
cat /proc/version
Linux version 2.6.18-308.el5.028stab099.3 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46))
Вы можете подтвердить это mysqli
установлен или нет, указав установленные модули. SSH в свой Cent OS и введите следующую команду.
php -m | grep mysqli
Если ничего не возвращается, значит у вас нет mysqli.so
загружен. Проверьте, установлен ли в вашей системе общий объект.
# Located extension dir
php -i | grep extension_dir
# List mysql.so in the path returned from the previous command
ls -la /usr/lib/php/extensions/no-debug-non-zts-20090626/mysqli.so
Если mysqli.so присутствует и имеет разрешения -rwxr-x-rx
, вам необходимо загрузить / включить расширение mysqli в глобальной системе php.ini
файл.
# Adjust path to correct php.ini file.
# Run `php -i | grep "Configuration File"` to locate, if needed
# It might be easier to use vi, or nano, for this
sudo echo "extension=mysqli.so" >> /etc/php5/php.ini
# Restart apache
sudo service httpd restart
Остальное. Если у вас нет mysqli.so
присутствует в вашей системе. Вы можете установить rpm, следуя указаниям вашего системного менеджера пакетов и повторяя предыдущий шаг php.ini.
sudo yum install php5-mysqli
Удивительно sudo yum install php5-mysqli
это не установило пакет mysqli для меня. Что еще более удивительно, у меня PHP версии 5.5.31, и я предположил, что mysqli установлен по умолчанию. Но я был неправ. Пришлось установить и пересобрать apache из WHM.
Чтобы установить mysqli с помощью EachApache:
Выполните поиск по запросу "EasyApache" или перейдите в
Программное обеспечение> EasyApache Прокрутите вниз и выберите вариант сборки (ранее сохраненная конфигурация).
Просто чтобы ответить на этот вопрос всем пользователям Windows (например, мне) и добавить Emcconvilleидеально принятый ответ:
Вы можете подтвердить, установлен ли mysqli, перечислив установленные модули. SSH в свой Cent OS и введите следующую команду.
php -m | findstr /C:"mysqli"
Вы можете использовать следующую команду, чтобы найти, где PHP установлен в вашей системе.
where php
:: Returns C:\PHP\php.exe on my system
:: This yields to extensions being here: C:\PHP\ext
dir C:\PHP\ext | findstr /C:"mysqli"
:: shows weather "php_mysqli.dll" is installed
Загрузка и включение расширения работает как в Linux - он также находится на указанном выше пути с where php
. Блокнот тоже подойдет, но echo "extension=mysqli.so" >> /etc/php5/php.ini
тоже работает в командной строке с достаточными разрешениями.
Если его нет, обратитесь к Вот для загрузки / установки, особенно пункт "Загрузка расширения"