2014-09-10 70 views
3

当我通过ssh运行PHP脚本,如:致命错误:在/home/blabla/blabla.php调用未定义功能mb_internal_encoding()第2行

php /home/blabla/blabla.php 

它说:

Fatal error: Call to undefined function mb_internal_encoding() in /home/blabla/blabla.php on line 2 

但当我通过浏览器运行它像http://blabla.com/blabla.php它的作品。

我已经安装使用--enable-mbstring),它是在php.ini中激活MBSTRING(否则就不能在浏览器中工作过)

mbstring 

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

什么是造成这种情况的原因是什么?

为什么当我想通过ssh运行我的php时出现错误?

+1

难道您激活该的二手通过CLI SAPI在php.ini MBSTRING,它往往是一个不同的php.ini由使用webserver SAPI – 2014-09-10 23:00:32

+0

是的,当我运行phpinfo()它说它已被激活,否则它如何通过浏览器工作? – woheras 2014-09-10 23:08:43

+1

当我看phpinfo我看到mbstring,但是当我运行php -m我不能看到mbstring,我什么都不懂。 – woheras 2014-09-10 23:29:48

回答

1

这并不奇怪,它通过网络服务器工作,但不是从命令行。 这两个很可能会使用不同的配置文件。

您可以将<? phpinfo(); ?>放在.php文件中,并通过web服务器和CLI运行相同的php文件以获得更好的理解。然后,您可以再次检查配置文件并确保启用了扩展。

另一种选择(但很激烈)将重建PHP和Apache。

0

phpinfo();置于.php文件中并在服务器上运行。

如果 'Zend的多字节支持' 被禁用:

  1. 转到PHP配置 '的php.ini' 文件
    • 在Ubuntu中,他们将在“/等/ PHP/PHP {版本} /apache2/php.ini”
      (如 “/etc/php/7.0/apache2/php.ini”)
  2. 集:zend.multibyte = On
  3. 重新启动服务器。
    • 在Ubuntu中,运行shell命令:sudo service apache2 restart
相关问题