似乎很奇怪某些函數在被Web瀏覽器調用時定義, 但它在命令行模式下變得未定義。未在命令行中定義的PHP函數
例如,
<?php
echo function_exists('mb_detect_encoding') ? 'yes' : 'no';
?>
當在瀏覽器中運行,它打印,這意味着該功能已被定義爲「是」。
但是,當我在命令行中運行這段代碼,它打印「無」
爲什麼?在命令行模式下我錯過了什麼設置?
似乎很奇怪某些函數在被Web瀏覽器調用時定義, 但它在命令行模式下變得未定義。未在命令行中定義的PHP函數
例如,
<?php
echo function_exists('mb_detect_encoding') ? 'yes' : 'no';
?>
當在瀏覽器中運行,它打印,這意味着該功能已被定義爲「是」。
但是,當我在命令行中運行這段代碼,它打印「無」
爲什麼?在命令行模式下我錯過了什麼設置?
在linux上你應該檢查/etc/php5/cli/conf.d以確定它是否啓用。 否則請嘗試從另一個環境複製,例如/etc/php5/apache2/conf.d
這是因爲您的發行版選擇了編譯時間選項。看起來他們已經在cli解釋器中啓用了它,但不是在apache模塊中。
檢查mbstring擴展的installation instructions。如果你真的需要它,你必須爲自己編譯php。
命令php -m
列出您的活動模塊(擴展)。
要查看它是否處於活動狀態,請在此列表中搜索mbstring
。如果它不存在,它可能是:
或
添加extension=mbstring.so
到您的全球php.ini啓用它。 (如果它構建爲共享庫。)
http://php.net/manual/en/mbstring.installation.php –
奇怪? Web瀏覽器通常不運行PHP的命令行版本:它們將PHP作爲Web服務器模塊或CGI/FastCGI運行。 –
@MikeB我很確定我已經安裝了mbstring – sc1013