最近我发现我的服务器Centos 版本 2.6中未安装 mysqli 扩展。我确认了这一点,因为我将数据库连接的驱动程序从 更改mysqli
为mysql
,现在运行正常。那么,还有其他方法/日志可以确定这个问题吗?因为 apache error_log 没有提到这一点。
这确实不是问题,但将来可能会更复杂。为什么?因为使用 mysqli 驱动程序,网站死机,页面空白,没有错误/警告来帮助我解决问题。我不喜欢用 magics arts 发现问题或逐行测试的想法。应该有一些日志文件可以帮助我调试它。
为了提供信息来帮助解决此问题,我做了:
cat /proc/version
Linux version 2.6.18-308.el5.028stab099.3 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46))
答案1
您可以mysqli
通过列出已安装的模块来确认是否已安装。通过 SSH 进入您的 Cent OS 系统,然后发出以下命令。
php -m | grep mysqli
如果没有返回任何内容,则表示您没有mysqli.so
加载。请检查您的系统上是否安装了共享对象。
# Located extension dir
php -i | grep extension_dir
# List mysql.so in the path returned from the previous command
ls -la /usr/lib/php/extensions/no-debug-non-zts-20090626/mysqli.so
如果 mysqli.so 存在并且具有权限-rwxr-x-rx
,则需要在系统全局php.ini
文件中加载/启用 mysqli 扩展。
# Adjust path to correct php.ini file.
# Run `php -i | grep "Configuration File"` to locate, if needed
# It might be easier to use vi, or nano, for this
sudo echo "extension=mysqli.so" >> /etc/php5/php.ini
# Restart apache
sudo service httpd restart
否则。如果您的系统中没有mysqli.so
。您可以按照系统包管理器安装 rpm,然后重复前面的 php.ini 步骤。
sudo yum install php5-mysqli
答案2
令人惊讶的是,sudo yum install php5-mysqli
这并没有为我安装 mysqli 包。更令人惊讶的是,我有 PHP 版本 5.5.31,我以为它默认安装了 mysqli。但我错了。我必须从 WHM 安装并重建 apache。
要使用 EachApache 安装 mysqli:
- 以“root”用户身份登录WHM。
搜索“EasyApache”或访问
软件 > EasyApache 向下滚动并选择构建选项(以前保存的配置)
- 点击开始“根据配置文件开始定制”
- 选择Apache的版本,然后单击“下一步”。
- 选择PHP的版本,然后单击“下一步”。
- 在“简短选项列表”中选择其他选项
- 选择“详尽选项列表”并查找“MySQL 改进扩展”
- 点击“保存并构建”
答案3
只是为了回答所有人视窗用户(比如我)并加起来埃姆康维尔完美接受的答案:
您可以通过列出已安装的模块来确认 mysqli 是否已安装。通过 SSH 进入您的 Cent OS 系统,然后发出以下命令。
php -m | findstr /C:"mysqli"
您可以使用以下命令来查找系统上 PHP 的安装位置。
where php
:: Returns C:\PHP\php.exe on my system
:: This yields to extensions being here: C:\PHP\ext
dir C:\PHP\ext | findstr /C:"mysqli"
:: shows weather "php_mysqli.dll" is installed
加载并启用扩展功能就像在 Linux 中一样- 它也位于上面找到的路径中where php
。记事本也可以做到这一点,但echo "extension=mysqli.so" >> /etc/php5/php.ini
在具有足够权限的命令行中也可以工作。
如果不存在,请参阅这里对于装载/安装,特别是段落“加载扩展“