2014-09-10 72 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
相關問題