У меня очень неприятная проблема с pdo_mysql
,
Конфигурация:
Вот что я сделал:
mysql
пакет и установил mariadb
(все перечисленное здесь: http://ftp.ddg.lth.se/mariadb//mariadb-10.1.14/yum/rhel6-amd64/rpms/ кроме oqgraph-engine.rpm
). Я был в состоянии запросить таблицы, поэтому я предполагаю, что установка в порядке.could not find driver
поэтому я попытался скомпилировать php
pdo_mysql
Водитель;PHP
) в /php-5.6.21
;Я перешел к /php-5.6.21/ext/pdo_mysql
, побежал phpize
с последующим ./configure
а потом make
, Здесь я получил кучу ошибок:
[root@user029x ~]# cd /php-5.6.21/ext/pdo_mysql
[root@user029x pdo_mysql]# phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@user029x pdo_mysql]# ./configure
......................................
[root@user029x pdo_mysql]# make
/bin/sh /php-5.6.21/ext/pdo_mysql/libtool --mode=compile cc -I/usr/local/include/php/ext -I -I. -I/php-5.6.21/ext/pdo_mysql -DPHP_ATOM_INC -I/php-5.6.21/ext/pdo_mysql/include -I/php-5.6.21/ext/pdo_mysql/main -I/php-5.6.21/ext/pdo_mysql -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /php-5.6.21/ext/pdo_mysql/pdo_mysql.c -o pdo_mysql.lo
cc -I/usr/local/include/php/ext -I -I. -I/php-5.6.21/ext/pdo_mysql -DPHP_ATOM_INC -I/php-5.6.21/ext/pdo_mysql/include -I/php-5.6.21/ext/pdo_mysql/main -I/php-5.6.21/ext/pdo_mysql -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /php-5.6.21/ext/pdo_mysql/pdo_mysql.c -fPIC -DPIC -o .libs/pdo_mysql.o
In file included from /php-5.6.21/ext/pdo_mysql/pdo_mysql.c:32:
/php-5.6.21/ext/pdo_mysql/php_pdo_mysql_int.h:27:34: error: ext/mysqlnd/mysqlnd.h: No such file or directory
/php-5.6.21/ext/pdo_mysql/php_pdo_mysql_int.h:28:50: error: ext/mysqlnd/mysqlnd_libmysql_compat.h: No such file or directory
/php-5.6.21/ext/pdo_mysql/php_pdo_mysql_int.h:64:39: error: ext/mysqlnd/mysqlnd_debug.h: No such file or directory
In file included from /php-5.6.21/ext/pdo_mysql/pdo_mysql.c:32:
/php-5.6.21/ext/pdo_mysql/php_pdo_mysql_int.h:101: error: expected specifier-qualifier-list before ‘MYSQL’
/php-5.6.21/ext/pdo_mysql/php_pdo_mysql_int.h:116: error: expected specifier-qualifier-list before ‘MYSQL_FIELD’
/php-5.6.21/ext/pdo_mysql/php_pdo_mysql_int.h:121: error: expected specifier-qualifier-list before ‘MYSQL_RES’
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c:61:45: error: ext/mysqlnd/mysqlnd_reverse_api.h: No such file or directory
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c:62: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c:82: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pdo_mysql_reverse_api’
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c: In function ‘zm_startup_pdo_mysql’:
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c:132: error: ‘pdo_mysql_reverse_api’ undeclared (first use in this function)
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c:132: error: (Each undeclared identifier is reported only once
/php-5.6.21/ext/pdo_mysql/pdo_mysql.c:132: error: for each function it appears in.)
make: *** [pdo_mysql.lo] Error 1
Я искал везде, где мог, и проверял похожие посты здесь и на сервере. Я не смог найти четкого и окончательного ответа, чтобы помочь мне в дальнейшей отладке. Консультационные решения предложили использовать yum install
(что я не могу) или переустановить все (я действительно не хочу проходить весь процесс снова …).
Если необходимо, вот список с модулями, которые я установил с помощью вышеупомянутого метода:
[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
gd
hash
iconv
json
ldap
libxml
mbstring
oci8
pcre
PDO
PDO_OCI
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xdebug
xml
xmlreader
xmlwriter
[Zend Modules]
Xdebug
Можете ли вы помочь мне понять это?
Редактировать: ext
а также mysqlnd
каталоги перечислены:
То, что вы делаете, компилирующее расширение как отдельное, не полностью поддерживается. Но вы должны быть в состоянии обойти это.
Для использования модулей MySQL в PHP есть два варианта: либо использовать libmysql, либо mysqlnd. Увидеть http://php.net/manual/en/mysql.php а также http://php.net/mysqlnd для фона.
По умолчанию система сборки предполагает, что вы используете mysqlnd, но в вашей системе в настоящее время не установлено myslqnd. У вас есть два варианта:
Для 1) вы идете в ext / myslqnd и выполняете там шаги phpize, configure, make, make install. Когда-нибудь phpize может пожаловаться, тогда вам придется переименовать config9.m4
там, чтобы config.m4
первый. После установки mysqlnd вы можете перейти к pdo_mysql и сделать то, что вы пытались. Теперь следует найти правильные заголовки.
Для 2) вам нужен libmysql, включая заголовки разработки, установленные в вашей системе. Затем вы можете запустить конфигурацию, используя --with-pdo-mysql=/usr
опция, которая говорит, где найти libmysql.
В общем, я бы предложил использовать mysqlnd, используя подход 1).
Дополнение:
При переходе к 1) вы должны убедиться, что mysqlnd и pdo_mysql загружены из вашего php.ini, а mysqlnd должен быть первым!
Так что-то вроде
extension=mysqlnd.so
extension=pdo_mysql.so
в конце ваш php.ini может работать
Вы должны изменить файл конфигурации. Пути закодированы неправильно.
Замените ‘ext / mysqlnd /’ на ‘../../ext/mysqlnd/’ в файлах .h.
пожалуйста, попробуйте это при настройке.
./ configure —with-php-config = / path / to / your / php / bin / php-config —with-pdo-mysql = / path / to / your / mysql