我正在 VMWare 上测试 CentOS 版本。我运行的是 CentOS 5.5。我试图让 mysql 与 php5.3 一起工作
我从源代码编译了 PHP 5.3,并安装了相关的 mysql 垃圾。但是,mysql.so 从未安装过。执行“locate mysql.so”会在某些 perl 版本或其他东西中显示 mysql.so,但 php 中没有显示任何内容。
那么我可以从某个地方下载 mysql.so 文件吗?我在 Google 上搜索了大约 3 页,但找不到下载的方法。每个人都说它随 PHP 一起提供,但我却没有。我的 phpinfo() 显示已加载 mysqli,但未加载 mysql。
yum install php-mysql 表示它是最新的。
有任何想法吗?
编辑:所以我忘了在编译标志中添加 --with-mysql。哎呀。所以我这样做了,现在我得到了以下内容:
checking for MySQL support... yes
checking for specified location of the MySQL UNIX socket... no
checking for mysql_close in -lmysqlclient... no
checking for mysql_error in -lmysqlclient... no
configure: error: mysql configure failed. Please check config.log for more information.
和 config.log:
configure:60081: checking for MySQL support
configure:60128: checking for specified location of the MySQL UNIX socket
configure:60332: checking for mysql_close in -lmysqlclient
configure:60351: gcc -o conftest -I/usr/include -g -O2 -fvisibility=hidden -Wl,-rpath,/usr/lib/mysql -L/usr/lib/mysql -L/usr/lib -Wl,-rpath,/usr/kerberos/lib64 -L/usr/kerberos/lib64 -Wl,-rpath,/usr/kerberos/lib -L/usr/kerberos/lib conftest.c -lmysqlclient -lmcrypt -lltdl -lcrypt -lfreetype -lpng -lz -ljpeg -lcurl -lz -lm -ldl -lnsl -lxml2 -lz -lm -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -ldl -lz 1>&5
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
configure: failed program was:
#line 60340 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char mysql_close();
int main() {
mysql_close()
; return 0; }
configure:60574: checking for mysql_error in -lmysqlclient
configure:60593: gcc -o conftest -I/usr/include -g -O2 -fvisibility=hidden -Wl,-rpath,/usr/lib/mysql -L/usr/lib/mysql -L/usr/lib -Wl,-rpath,/usr/kerberos/lib64 -L/usr/kerberos/lib64 -Wl,-rpath,/usr/kerberos/lib -L/usr/kerberos/lib -Wl,-rpath,/usr -L/usr conftest.c -lmysqlclient -lz -lmcrypt -lltdl -lcrypt -lfreetype -lpng -lz -ljpeg -lcurl -lz -lm -ldl -lnsl -lxml2 -lz -lm -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -ldl -lz 1>&5
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
configure: failed program was:
#line 60582 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char mysql_error();
int main() {
mysql_error()
; return 0; }
答案1
奇怪。在我的 RHEL 机器上,mysql.so 由 php-mysql 提供。它rpm -ql php-mysql | grep mysql.so
给你什么?
您可能遇到了版本问题?RHEL/CentOS 存储库使用的是 PHP 5.1.6 版。但是您从源代码编译了 php5.3,并且似乎使用了 php-mysql 包。我不确定后者是否能与前者很好地配合使用。从管理方便的角度来看,您可能更愿意从存储库安装 php 包。如果您不需要 5.3 中单独提供的任何功能,那么这对您来说可能要容易得多。
另外,您是否使用适合 mysql 的标志编译了 PHP?(--with-mysql
?)
——Christopher Karel
答案2
我正在尝试让 mysql 与 php5.3 一起工作
不要从 CentOS 源代码进行编译,除非你真的知道你将要破坏什么并保留这些碎片...如果你想要胜过包管理系统,这对于任何发行版都是正确的。
您确实应该使用第三方存储库,例如: http://wiki.centos.org/AdditionalResources/Repositories