在Web浏览器调用某些函数时,似乎很奇怪, 但它在命令行模式下变得不确定。
例如,
<?php
echo function_exists('mb_detect_encoding') ? 'yes' : 'no';
?>
当它在浏览器中运行时,它会打印“yes”,这意味着此功能已经定义。
但是当我在命令行中运行这段代码时,它会输出“no”
为什么呢?我在命令行模式下错过了哪些设置?
答案 0 :(得分:2)
你应该检查/etc/php5/cli/conf.d如果它已经启用了。 否则尝试从另一个环境复制,例如/etc/php5/apache2/conf.d
答案 1 :(得分:1)
这是因为您的发行版选择了编译时选项。看来他们已经在cli解释器中启用了它,但没有在apache模块中启用它。
检查mbstring扩展名的installation instructions。如果你真的需要它,你必须自己编译php。
答案 2 :(得分:0)
通过CommandLine(CLI)调用脚本时,请务必使用与Web服务器执行PHP时相同的配置文件。
来自“php --help”:
-c |在这个目录中查找php.ini文件
现在模块,mb_string就是其中之一,动态加载......
答案 3 :(得分:0)
命令php -m
列出了您的活动模块(扩展名)。
要查看它是否处于活动状态,请在此列表中搜索mbstring
。如果不存在,可能是:
或
在您的全局php.ini中添加extension=mbstring.so
以启用它。 (如果它是作为共享库构建的。)