PHP函数未在命令行中定义

时间:2013-04-18 14:50:05

标签: php

在Web浏览器调用某些函数时,似乎很奇怪, 但它在命令行模式下变得不确定。

例如,

<?php
echo function_exists('mb_detect_encoding') ? 'yes' : 'no';
?>

当它在浏览器中运行时,它会打印“yes”,这意味着此功能已经定义。

但是当我在命令行中运行这段代码时,它会输出“no”

为什么呢?我在命令行模式下错过了哪些设置?

4 个答案:

答案 0 :(得分:2)

在Linux上

你应该检查/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。如果不存在,可能是:

  • 仅在apache_handler php.ini
  • 中启用

  • 在cli php.ini
  • 中禁用

在您的全局php.ini中添加extension=mbstring.so以启用它。 (如果它是作为共享库构建的。)