我正在尝试使用 mysqlnd_uh 扩展实现与以下文章中描述的类似的 mysql 记录器。
http://blog.mayflower.de/archives/578-MySQLnd-Plugins-Writing-a-MySQL-Query-Logger-in-PHP.html
它的工作原理是,它将拦截进入 mysql 和 mysqli 函数的调用,并将其放入代理类中,我们可以在其中拦截调用以进行日志记录。当然,这个客户端库需要 Mysql 本机驱动程序,而 PHP 5.3 并未安装该驱动程序,因此我按照本教程中的步骤来检查 Apache 和 PHP 的源代码,并将它们编译到运行最新版本的 Ubuntu 的 VM 上,并将 mysqli 和 mysql 的编译选项设置为 mysqlnd。
http://www.web-tech-india.com/articles/php/compiling_php_apache/
这似乎运行良好,因为我可以访问仅在 mysqlnd 内部支持的 mysqli_fetch_all 函数。
现在我要尝试使用 pecl 安装 mysqlnd_uh 插件。
sudo /home/jason/pear/bin/pecl install mysqlnd_uh-alpha
配置部分运行正常,但 make 部分失败,并出现以下错误。显然,它抱怨找不到源文件,但它在哪里查找?我是否应该将参数传递给 pecl 以指向我的 php 源代码副本的位置?在教程中,它告诉我使用 --enable-so 选项编译 apache,这会造成混淆吗?
running: make
/bin/bash /tmp/pear/install/pear-build-roothNJj2h/mysqlnd_uh-0.1.0a1/libtool --mode=compile cc -I. -I/tmp/pear/install/mysqlnd_uh -DPHP_ATOM_INC -I/tmp/pear/install/pear-build-roothNJj2h/mysqlnd_uh-0.1.0a1/include -I/tmp/pear/install/pear-build-roothNJj2h/mysqlnd_uh-0.1.0a1/main -I/tmp/pear/install/mysqlnd_uh -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/install/mysqlnd_uh/php_mysqlnd_uh.c -o php_mysqlnd_uh.lo
libtool: compile: cc -I. -I/tmp/pear/install/mysqlnd_uh -DPHP_ATOM_INC -I/tmp/pear/install/pear-build-roothNJj2h/mysqlnd_uh-0.1.0a1/include -I/tmp/pear/install/pear-build-roothNJj2h/mysqlnd_uh-0.1.0a1/main -I/tmp/pear/install/mysqlnd_uh -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/install/mysqlnd_uh/php_mysqlnd_uh.c -fPIC -DPIC -o .libs/php_mysqlnd_uh.o
In file included from /tmp/pear/install/mysqlnd_uh/php_mysqlnd_uh.c:23:0:
/tmp/pear/install/mysqlnd_uh/mysqlnd_uh.h:46:33: fatal error: ext/mysqlnd/mysqlnd.h: No such file or directory
compilation terminated.
make: *** [php_mysqlnd_uh.lo] Error 1
ERROR: `make' failed
谢谢您的提示!Jason
答案1
编辑:尝试# sudo apt-get install php5-dev
安装标题,然后再次尝试安装扩展。如果有效,那就太好了!
但如果没有,那么我们必须一步一步来。首先,编译 PHP+Apache 的链接适用于 PHP 4.3,不适用于 PHP 5.3,此链接应该适合 PHP 5.3 编译。请尝试按照以下说明操作
顺便问一下,# sudo updatedb; locate 'mysqlnd.h'
返回的是什么?我猜是因为 PHP 源(您可能使用这些链接下载的)没有放在适当的位置(或者头文件不存在),因此出现错误
PS:将随着进展更新此答案