由于某种原因,我的 php 扩展已启用,但未由 Apache 2.4 服务器加载。我缺少的扩展是 mbstring 和 fileinfo。我手动进行了安装,并希望保持这种状态,主要是为了学习目的。
当我说启用时,我的意思是当我php -m
在 cmd 中运行时,扩展名就在列表中
但是,当我<?php phpinfo();
从我的服务器运行时,这些扩展不在列表中。
在我的 php.ini 文件中,我仅配置了以下内容(与扩展相关):
extension_dir = "ext"
extension=mbstring (uncommented the line)
extension=fileinfo (uncommented the line)
我在httpd.conf中添加了以下内容:
# PHP5 module
LoadModule php7_module "C:/php/php7apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php/"
并且,在 phpinfo() 中,我看到只加载了一个 php.ini,即来自 C:/php 的那个
为什么我的扩展在 Apache 服务器上不可用?我是否必须以某种方式在 Apache 中手动加载/启用它们?
*版本:Apache 2.4.39,PHP 7.3.4
答案1
我在使用常规 Apache PHP 类型的配置之外的扩展时也遇到了同样的问题。我发现如果我不使用 Apache 作为服务,而是打开命令控制台来启动 Apache,它就会加载。这是它加载的唯一方式。不要使用批处理或服务。
对于 Windows,
- 按Winkey+ R,
- 类型
cmd
, - 按Ctrl+ Shift+ Enter,然后
- 点击“是”。
- 然后,cd 到您的 Apache/bin 目录并输入
httpd
。
我认为如果你做任何超出常规的事情,除非你构建自己的可执行文件,否则自定义扩展将无法起作用。