2013-11-11 4 views
0

Я запускаю локальный dev-сервер apache2 с установленным php 5.5.3. По какой-то причине я получаю ошибкуMysqli_stmt_get_result, возвращающий фатальную ошибку в PHP 5.5.3

Fatal error: Call to undefined function mysqli_stmt_get_result() 

на всех моих страницах. Я прочитал в документации php, что метод get_result() требует основанного на MySQL драйвера (mysqlnd), однако на веб-сайте MySQL он говорит: «Начиная с PHP 5.4, библиотека mysqlnd является стандартным временем компиляции php.net во всем PHP MySQL расширения». Я попытался установить php5-mysqlnd в любом случае, и когда я делаю это переписывает мой предыдущий MySQL и Mysqli конфигурационных файлов, в результате чего мне получить ошибку

Fatal error: Call to undefined function mysqli_connect() 

и когда я переустановить php5-MySQL удаляет пакет mysqlnd. Я не очень заинтересован в установке пакетов. Меня больше интересует, почему mysqlnd не распознается как пакет в PHP 5.5.3, как и должно быть, и как его включить? Заранее спасибо!

Apache 2 сервер на Ubuntu 13.10 бега:

[~]$ php5 --version 
PHP 5.5.3-1ubuntu2 (cli) (built: Oct 9 2013 14:49:12) 
Copyright (c) 1997-2013 The PHP Group 

[~]$ mysql --version 
mysql Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (x86_64) using readline 6.2 

EDIT:

Я уже добавил расширений в мой файл php.ini, расположенный в /etc/php5/apache2/php.ini. Файл гласит:

; If you wish to have an extension loaded automatically, use the following 
; syntax: 
; 
; extension=modulename.extension 
; 
; For example, on Windows: 
; 
; extension=msql.dll 
; 
; ... or under UNIX: 
; 
; extension=msql.so 
; 
; ... or with a path: 
; 
; extension=/path/to/extension/msql.so 

extension=/usr/lib/php5/20121212/curl.so 
extension=/usr/lib/php5/20121212/json.so 
extension=/usr/lib/php5/20121212/mysqli.so 
extension=/usr/lib/php5/20121212/mysql.so 
extension=/usr/lib/php5/20121212/mysqlnd.so 
+0

вам все равно необходимо включить расширение mysqli. – goat

ответ

5

Проверьте php.ini, чтобы проверить, если расширение для MySQLi является раскомментирована .. Пример того, что он должен выглядеть как бы:

extension=php_ldap.dll 
;extension=php_mssql.dll 
;extension=php_mbstring.dll 
;extension=php_exif.dll  ; Must be after mbstring as it depends on it 
extension=php_mysql.dll 
extension=php_mysqli.dll 

Если это имеет ; затем удалить это, сохраните изменения в php.ini и перезапустить Apache, вызывая:

/etc/init.d/apache restart 

и если вы не знаете, где находится php.ini, создайте простую страницу с:

<?php 
    phpinfo(); 
?> 

и проверить линию:

Loaded Configuration File: каталог/к/php.ini

Или даже запустить phpinfo();, чтобы начать с и проверить:

MySQLI Enabled in phpinfo

+0

Я уже включил расширение в моем файле php.ini. Для получения дополнительной информации см. Мое редактирование. – lhasson

+1

@lhasson Прошу прощения за задержку, проверьте свой журнал ошибок php, чтобы проверить, добавлено ли добавочное расширение в каталог расширения '/ ext /*.*' –

+0

под журналом ошибок. Я получаю эту ошибку - 'PHP Warning: PHP Startup: невозможно загрузить динамическую библиотеку '/usr/lib/php5/20121212/mysqlnd.so' - /usr/lib/php5/20121212/mysqlnd.so: не удается открыть файл общих объектов: такой файл или каталог отсутствует в Unknown on line 0' Я думаю, проблема в том, что когда я sudo apt-get install php5-mysqlnd, он возвращает 1 для удаления и 1 для установки. Удаление: «php5-mysql» и установка: «php5-mysqlnd», чего я не хочу. – lhasson

Смежные вопросы