PHP mysqli在命令行中工作,但不在页面上工作

时间:2013-10-10 20:47:58

标签: php apache mysqli

Red Hat Linux Server,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)工作正常。知道这里发生了什么吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

就像我说的那样,今天我面对的是与Apache 2.4,PHP 5.5.12,Windows Server 2008完全相同的问题。
但是我能够解决这个问题。

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

解决方案
我通过指向Apache服务器上正确的php.ini和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"  

仅第一行即可解决此问题。

答案 1 :(得分:0)

从CLI(命令行)运行php是从网络服务器进行的。

请在两者中启用mysqli扩展。

通常情况下,如果已安装,您可以进入&#39; php.ini&#39;并取消注释&#39; mysqli&#39;的行。在某些安装中,有一个&#39; php.ini&#39;用于Apache,另一个用于命令行。我认为它们都位于&#39; / etc / php5 /&#39;。

之下

答案 2 :(得分:0)

我在Unix堆栈交换上问了几乎相同的问题,该问题得到解决。有时重新启动apache即使重新启动系统也无效,但是停止服务并再次启动它对我来说是有效的:

在Fedora上

sudo systemctl stop httpd && sudo systemctl start httpd

在没有systemd的系统上(例如Ubuntu),您可能可以使用类似这样的东西,而无需对其进行测试:

sudo service apache2 stop && sudo service apache2 start

参考:How to install php + mysql on Fedora?