我正试图从终端运行以下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"