首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP mysqli可以在命令行中工作,但不能在页面上工作

问PHP mysqli可以在命令行中工作,但不能在页面上工作
EN

Stack Overflow用户
提问于 2013-10-11 04:47:58
回答 3查看 2.8K关注 0票数 7

Red Hat Linux Server、Apache 2.2、PHP 5.5.4

当我在命令行中运行此命令时,一切似乎都很正常:

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

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

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

从下面的代码:

代码语言:javascript
复制
<?php
    $mysqli = new mysqli("localhost", "un", "pw", "things", "3306");
?>

其他.php页面(不使用mysqli)可以正常工作。知道这是怎么回事吗?提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2020-04-21 05:15:24

就像我说的,今天我在Apache2.4,PHP5.5.12,Windows Server2008上遇到了完全相同的问题。

但是我能够解决这个问题。

诊断

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

解决方案

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-05-17 18:07:02

从CLI(命令行)运行php不同于webserver。

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

通常,如果安装了它,您可以进入'php.ini‘并取消对'mysqli’行的注释。在某些安装中,存在一个用于Apache的'php.ini‘副本和另一个用于命令行的副本。我想它们都位于'/etc/php5/‘下面的某个地方。

票数 0
EN

Stack Overflow用户

发布于 2018-09-30 00:34:30

我在Unix Stack Exchange上问过几乎相同的问题;这就是这个问题是如何解决的。

有时重启Apache甚至在重启之后也不起作用,但停止httpd服务并重新启动它对我来说很有效:

关于Fedora

代码语言:javascript
复制
sudo systemctl stop httpd && sudo systemctl start httpd

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

代码语言:javascript
复制
sudo service apache2 stop && sudo service apache2 start

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19305919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档