7

红帽 Linux 服务器、Apache 2.2、PHP 5.5.4

当我在命令行中运行它时,一切似乎都很好:

php -r '$mysqli = new mysqli("127.0.0.1", "un", "pw", "things", "3306");'

同时,我有一个无法运行的 .php 文档。我得到这个错误...

PHP 致命错误:在第 2 行的 [/path/to]/vars.php 中找不到类 'mysqli'

从此代码:

<?php
    $mysqli = new mysqli("localhost", "un", "pw", "things", "3306");
?>

其他 .php 页面(不使用 mysqli)工作正常。知道这里发生了什么吗?提前致谢。

4

3 回答 3

1

就像我说的,今天我遇到了与 Apache 2.4、PHP 5.5.12、Windows Server 2008 完全相同的问题。
但我能够解决这个问题。

诊断
phpinfo()在命令提示符以及 Web 服务器/浏览器中运行,并注意到php.ini文件的路径在两者中都不同。现在,我意识到我需要php.ini在 Apache 中强制设置文件的路径。

解决方案
我通过指向php.ini我的 Apache 服务器上的正确和 dll 文件来解决这个问题。在httpd.conf文件中,我按顺序写了这些行。

PHPIniDir "C:/path/php/php5.5.12"
LoadFile "C:/path/php/php5.5.12/php5ts.dll"
LoadModule php5_module "C:/path/php/php5.5.12/php5apache2_4.dll"  

仅第一行就解决了这个问题。

于 2020-04-20T21:15:24.140 回答
0

从 CLI(命令行)运行 php 与网络服务器不同。

我们应该在两者中启用 mysqli 扩展。

通常,如果已安装,您可以进入“php.ini”并取消注释“mysqli”行。在某些安装中,Apache 有一个“php.ini”副本,命令行有另一个副本。我认为它们都位于“/etc/php5/”下的某个地方。

于 2016-05-17T10:07:01.923 回答
0

我在 Unix Stack Exchange 上问过几乎相同的问题;这就是问题得到解决的方式。

有时即使在重新启动后重新启动 Apache 也没有效果,但是停止httpd服务并再次启动它对我有用:

在 Fedora 上

sudo systemctl stop httpd && sudo systemctl start httpd

在没有systemd(比如 Ubuntu)的系统上,你可能可以使用这样的东西(没有测试它):

sudo service apache2 stop && sudo service apache2 start

参考:如何在 Fedora 上安装 php + mysql?

于 2018-09-29T16:34:29.793 回答