2015-06-27 2 views
0

Как правило, в apache через mod php он работает отлично, но если я попробую function_exists ('mysqli_init'), функция не существует.Nette Tester: MySQLi не работает

Другие ошибки показали:

Вызов неопределенной функции mysqli_connect() класса 'MySQLi' не найден в файле < >

Почему MySQLi не работает и как это исправить? Благодаря!

Команда используется для запуска теста:

vendor/bin/tester -c /etc/php5/apache2 -p php 
+0

Будьте осторожны, PHP CLI и PHP веб имеют две различные конфигурации, так что появляется во время тестирования из командной строки может отличаться для веб. Гораздо лучше сделать веб-страницу со следующим в ней: Правдоподобно, что mysqli не настроен для CLI на вашем сервере, но для Интернета. Удачи! –

+0

Это также может помочь: http://stackoverflow.com/questions/11585399/command-line-php-mysqli-fails-but-works-via-web-server-and-works-in-local –

ответ

1

Попробуйте запустить ./vendor/bin/tester -c /etc/php5/apache2 -p php --info, чтобы увидеть, какие php.ini расширения файлов и PHP загружены.

Скорее всего, вы узнаете, что расширение MySQLi не загружено, потому что /etc/php5/apache2/php.ini не содержит необходимого параметра.

Правильное решение - создать конкретный php.ini для вашего проекта с необходимыми расширениями.

Смотрите также official documentation:

Тестер работает PHP процессов с опцией -n, поэтому нет php.ini не загружается (даже не то, что от /etc/php/conf.d/*.ini в UNIX)

0

с параметром тестер -c, вам необходимо предоставить путь к php.ini файла, а не папку, содержащую его.

Также тестер сбрасывает среду php для повторяемого результата. Это лучшая идея предоставить собственный php.ini, который только определяет необходимое extesions:

[PHP} 
extension=mysqli.so