我在 Ubuntu 11.03 上运行着一个本地服务器,其中运行着 PHP 5.3.6 和 Apache 2.2.19。我从源代码构建了 Apache 和 PHP。PHP 在 Apache 上工作正常,但它似乎从不加载任何扩展。我取消了注释我希望 PHP 加载的扩展,我检查了 PHP 是否正在读取 INI 文件,我取消了注释指令extension_dir
并确保它是正确的。
这些文件mysqli.so
似乎mysql.so
丢失了,还有很多其他文件。这是我第一次从源代码安装 PHP。我知道 PHP 5.3.6 没有捆绑 MySQL 客户端库。
我还检查了 PHP 存储库,它不再被维护。我可以使用 PDO,但我更喜欢使用 MySQL 类。
我的问题是:我从哪里获取这些文件?我查看了 MySQL 网站,但它并没有真正帮助我。PHP 似乎只加载了已经内置在 PHP 中的扩展。
答案1
MySQL 扩展包含在单独的包中:
$ apt-cache search mysql |grep php
这是我在 debian 上所拥有的(通过 apt-get 安装后它自动运行):
plaes@machine:~$ dpkg -L php5-mysql
/.
/etc
/etc/php5
/etc/php5/conf.d
/etc/php5/conf.d/pdo_mysql.ini
/etc/php5/conf.d/mysqli.ini
/etc/php5/conf.d/mysql.ini
/usr
/usr/share
/usr/share/doc
/usr/lib
/usr/lib/php5
/usr/lib/php5/20090626
/usr/lib/php5/20090626/mysqli.so
/usr/lib/php5/20090626/pdo_mysql.so
/usr/lib/php5/20090626/mysql.so
/usr/share/doc/php5-mysql
答案2
缺少扩展 .so 文件
列出并注释掉的扩展php.ini
只是示例。默认情况下,它们不会随 PHP“交付”/安装。此外,mysql.so
除非您将扩展构建为“共享”扩展,否则不会有任何文件。
如果您自己编译 PHP,则需要在配置中激活扩展。运行./configure --help
以获取选项。
如果您使用配置脚本更改了配置,当然需要重新进行制作(make && make install)。
configure:错误:在 /usr/share/mysql 下找不到 MySQL 头文件。
安装libmysqlclient-dev
包或使用 mysqlnd:--with-mysql=mysqlnd
(mysqli 和 pdo-mysql 配置参数相同)
用于dpkg -L libmysqlclient-dev
查找位置并传递该位置,或者在配置参数中将路径留空。
自己编译
您似乎对自己编译代码了解不多,所以问题是您是否真的需要它。
问自己一个问题为什么你自己正在编译它。
检查它的权重,以解决不使用 Ubuntu 的库存包时遇到的问题:
- 您需要安装所有开发包
- 升级必须手动完成,包管理器不会为你执行此操作