我正在尝试从终端运行以下 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:错误的数学表达式:操作数预期在“HTTP_HOST ...”
转义 =
无效,转义 [
会导致 PHP 解析错误:
PHP 解析错误:第 1 行命令行代码中的语法错误、意外的“[”、期望标识符 (T_STRING)
我在这里做错了什么?如何从终端运行上面的代码?
最佳答案
因为你在双引号内运行 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"
关于php - zsh: 错误的数学表达式:操作数预期在 `' HTTP_HOST...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641066/