当我从命令行运行php脚本时,mysqli模块加载并运行,但是当我尝试从Apache运行相同的php脚本时,我没有运气。这就是我所做的:
1)取消注释php.ini
extension=php_mysqli.dll ;uncommented--should load
2)在`php.ini
中更新了我的扩展位置extension_dir = "C:/php/ext"
3)更新了Apache的php.ini
httpd.conf
文件的位置
PHPIniDir “C:/php”
4)重启Apache
我尝试过这个过程的一些变种,但每次运行php脚本(通过chrome调试器上的网络选项卡查看)时,我得到以下结果:
<b>Fatal error</b>: Uncaught Error: Class 'mysqli' not found in
C:\Apache24\htdocs\mysite\WebAPI\database.php:61
当我从cmd运行相同的php代码时,我没有收到此错误。我在Windows 10上使用Apache 2.4.25和MySQL 5.7运行php 7.1.5。
修改
就我的代码而言,我在一开始就失败了,调用了以下函数:
function open_database()
{
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo('We don\'t have mysqli!!!');
} else {
echo('Phew we have it!');
}
$dbinfo = get_dbinfo();
if ($dbinfo == null) return null;
$db = new mysqli('localhost', $dbinfo[0], $dbinfo[1], $dbinfo[2]);
return $db;
}
CMD的输出:
Phew we have it!
Apache的输出:
We don't have mysqli!!!<br />
<b>Fatal error</b>: Uncaught Error: Class 'mysqli' not found in
C:\Apache24\htdocs\mysite\WebAPI\database.php:61
Stack trace:
#0 C:\Apache24\htdocs\mysite\WebAPI\visitor_counts.php(116): open_database()
#1 {main}
thrown in <b>C:\Apache24\htdocs\mysite\WebAPI\database.php</b> on line <b>61</b><br />
运行phpinfo()
我只能在其中找到一行mysqli。这是我看到的图片: