zsh:错误的数学表达式:应在“';HTTP_HOST';


zsh: bad math expression: operand expected at `'HTTP_HOST...'

我正试图从终端运行以下php:

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代码,PHP解释器正试图用$_SERVER['HTTP_HOST']的值替换$_SERVER['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));"

我在我的一个盒子上做了一个测试来验证。

没有逃离

[root@exia ~]# php -r "var_dump($_SERVER['HTTP_HOST']);"
array(1) {
  [0] =>
  string(9) "HTTP_HOST"
}

带有逃逸

[root@exia ~]# php -r "var_dump('$_SERVER['HTTP_HOST']);"
NULL

和另一个好的衡量

[root@exia ~]# php -r "error_reporting(E_NONE); '$_SERVER['HTTP_HOST'] = 'localhost';
var_dump('$_SERVER['HTTP_HOST']);"
string(9) "localhost"