Php 在RHEL 6上编译'mysql_pdo'驱动程序(无internet访问,无'yum安装')
我对Php 在RHEL 6上编译'mysql_pdo'驱动程序(无internet访问,无'yum安装'),php,mysql,linux,pdo,makefile,Php,Mysql,Linux,Pdo,Makefile,我对pdo_mysql有一个非常恼人的问题 配置: RedHat Enterprise Linux 6 x64(未连接到internet) PHP 5.6.21 MariaDB 10.1.14 这就是我所做的: 卸载了默认的mysql软件包并安装了mariadb(此处列出的所有内容:除了oqgraph引擎.rpm)。我能够查询表,所以我认为安装是好的 运行web应用程序时,我遇到一个错误,说找不到驱动程序,因此我尝试编译phppdo_-mysql驱动程序 为了便于访问,我将源文件(与安装P
pdo_mysql
有一个非常恼人的问题
配置:
- RedHat Enterprise Linux 6 x64(未连接到internet)
- PHP 5.6.21
- MariaDB 10.1.14
- 卸载了默认的
软件包并安装了mysql
(此处列出的所有内容:除了mariadb
)。我能够查询表,所以我认为安装是好的oqgraph引擎.rpm
- 运行web应用程序时,我遇到一个错误,说
,因此我尝试编译找不到驱动程序
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
列出的目录:
您必须修改配置文件。路径编码不正确
将.h文件中的“ext/mysqlnd/”替换为“../../ext/mysqlnd/”。不完全支持将捆绑扩展编译为独立扩展。但你应该能够解决这个问题 在PHP中使用MySQL模块有两种选择:使用libmysql或mysqlnd。有关背景信息,请参见和 默认情况下,构建系统假定您使用的是mysqlnd,但您的系统当前没有安装myslqnd。您有两个选择:
config9.m4
重命名为config.m4
。一旦安装了mysqlnd,您就可以转到pdo_mysql并按照您的尝试进行操作。它现在应该fid正确的标题
对于2)您需要在系统上安装包含开发头的libmysql。然后可以使用--with-pdo-mysql=/usr
选项运行configure,该选项告诉您在哪里可以找到libmysql
一般来说,我建议使用方法1)使用mysqlnd
补充: 在进行1)时,必须确保从php.ini加载mysqlnd和pdo_mysql,mysqlnd必须是第一个! 有点像
extension=mysqlnd.so
extension=pdo_mysql.so
最后,php.ini可能会工作请在配置时尝试此操作
./configure--php-config=/path/to/your/php/bin/php-config--pdo-mysql=/path/to/your/mysql否!别这样!然后它可能会编译,但不会加载!你能再具体一点吗?你的意思是:
ext/mysqlnd/mysqlnd.h
,ext/mysqlnd/mysqlnd\u libmysql\u compat.h
,ext/mysqlnd/mysqlnd\u debug.h
和ext/mysqlnd/mysqlnd\u reverse\u api.h
?如果是,我正在努力!请看我的答案options@johannes为了您的工作方式,F.Gran需要使用以下代码行修改配置文件:$PHP_OPENSSL=“yes”,否则,mysqlnd会抱怨在mysqlnd
上找不到OpenSSL的evp.h库make
,只是抱怨说:make:**没有指定目标,也没有找到makefile。停止。
。我应该在mysqlnd
目录中编辑configure
生成吗?我必须删除libmysql
,因为mariadb
正在抱怨冲突。我现在正在尝试选项1),并将在整个过程中提供反馈!将行添加到php.ini
phpize
抱怨,我重命名了config9.m4
。已到达make
步骤,并收到以下消息:make:**未指定目标,也未找到makefile。停止。
。configure
步骤以和错误结束:configure:error:找不到OpenSSL的
。我在configure
之后检查了mysqlnd
目录,有三个文件名为Makefile
:Makefile.fragments
,Makefile.global
,Makefile.objects
,如前所述,所有这些都没有得到真正的支持。一个简单的修复方法可能是从配置[9]中删除与ssl相关的内容。m4并重新运行phpize。。。或者您可能会删除所有rpm安装的PHP,然后自己尝试完整的PHP构建(我不太了解mariadb,但他们也有自己的客户端库,可能选项2)我不需要自定义构建,只需要mysql
的pdo
驱动程序。谢谢你的建议!仍然在寻找一种方法。。。