【问题标题】:PHP mbstring doesn't work with Apache on WindowsPHP mbstring 不适用于 Windows 上的 Apache
【发布时间】:2016-03-19 17:28:02
【问题描述】:

我必须获得 PHP 5.4(32 位,TS)和 mbstring,在 Windows 上运行 Apache 2.4(32 位)。在我的 httpd.conf 中,我设置了这个:

PHPIniDir "c:/php54"
LoadModule php5_module "c:/php54/php5apache2_4.dll"
AddHandler application/x-httpd-php .php

在我的 php.ini 中:

extension_dir = "ext"
...
extension=php_mbstring.dll

现在,当我执行 php -m 时,它正确地表示 mbstring 已加载:

...
libxml
mbstring
mcrypt
...

php -i 吐出了一段关于mbstring 的内容:

mbstring

Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2
...

但是,当我有一个带有 <?php phpinfo(); ?> 的简单 index.php 时,没有关于 mbstring 的消息,即使它说使用了正确的 php.ini。

当我将 index.php 更改为 <?php echo mb_convert_case("hello world", MB_CASE_UPPER); ?> 时出现错误

Fatal error: Call to undefined function mb_convert_case() in C:\Apache24x86\htdocs\index.php on line 1

我可以使用 PHP CLI php index.php 运行完全相同的脚本,它会正确打印 HELLO WORLD

为什么 mbstring 在 php.exe 中有效,而在 Apache 中无效?当然,我多次重启了 Apache,甚至我的整个 PC。

【问题讨论】:

  • 也许这个答案可以帮助你:stackoverflow.com/a/25432880/5297359
  • Web SAPI 和 CLI SAPI 通常具有不同的 php.ini 文件,您需要确保更改了适当的文件....如果您正在运行 php -m 从命令行,并看到它已安装,那么您可能只为 CLI SAPI 启用了它
  • 也许您为 CLI 加载了不同的配置文件,就像为 Web 服务器加载的配置文件一样。此外,您必须重新启动 Web 服务器才能使许多配置更改生效。从命令行和您设置的 phpinfo 页面查看 phpinfo 的 ini 文件部分
  • 另外,我认为对 PHP 5.4 的支持随着 PHP 7 的发布而结束。您可能希望考虑升级到至少 5.6

标签: php windows apache php-extension mbstring


【解决方案1】:

我遇到了同样的问题,我用 cmd 命令解决了

  1. 关闭所有 apache 服务
  2. 以管理员身份运行 cmd
  3. 在我的例子中,使用命令cd C:\Apache24\bin 转到 apache 的 bin 文件夹
  4. 使用命令bin>mklink php.ini C:\php\php.ini 创建与文件php.ini 的符号链接

例子:

我希望这能帮助您解决问题。

【讨论】:

  • 我遇到了同样的问题。我的 php 目录在 D: 上。所以我以管理员身份打开了一个 cmd 并转到 C:\ 并输入 mklink /D php D:\php.inì 并解决了我的问题
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2013-10-30
  • 1970-01-01
相关资源
最近更新 更多