4
我試圖運行從終端下面的PHP:的zsh:數學不好表達:操作數預計將在`「HTTP_HOST ...」
php -r "error_reporting(E_NONE); $_SERVER['HTTP_HOST'] = 'localhost';
require('./config/site.php');
echo json_encode(array('HOST' => DB_SERVER, 'USER' => DB_USERNAME, 'PASS' => DB_PASSWORD, 'NAME' => DB_DATABASE));"
而且我發現了以下錯誤:
zsh: bad math expression: operand expected at `'HTTP_HOST...'
逃離=
沒有任何作用,逃避[
給出了一個PHP解析錯誤:
PHP Parse error: syntax error, unexpected '[', expecting identifier (T_STRING) in Command line code on line 1
我在這裏做錯了什麼?我如何從終端運行上面的代碼?
這不是試圖取代變量PHP解釋器,它的外殼( zsh中)。在調用PHP二進制文件之前,擴展shell變量。 –
從上例可以看出它是PHP。 shell不會像這樣替換字符串中的變量。 – ollieread
我不知道你爲什麼認爲shell「不會替換字符串中的變量」。 SUS/POSIX清楚地定義了雙引號塊要在啓用變量擴展的情況下進行解釋。根據shell(原始問題聲明它是zsh),'printf'<%s> \ n'「$ _SERVER ['HTTP_HOST']」將會產生一個數學錯誤(zsh),或者$ _SERVER會被擴展爲什麼都沒有(bash,POSIX等)。 PHP發生錯誤是因爲數據已經擴展爲零長度字符串,並且PHP在調用時接收到格式錯誤的語法。 –