php - zsh: 错误的数学表达式:操作数预期在 `' HTTP_HOST...'

标签 php zsh

我正在尝试从终端运行以下 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/

相关文章:

php - cron 开始工作时如何选择新记录

php - Laravel 中 $errors 的含义是什么

bash - zsh 循环多个参数

bash - 如何回显 'cat file.js; ls' 的前半部分?

macos - tmux 不重新连接

php - 在远程服务器上执行 PHP 脚本文件,而不在远程服务器上复制它

javascript - 当倒计时计时器 = 0 时,警报按钮或提交表单

php - 在 Woocommerce 中显示总购物车运输量值

zsh - ${#${(S%%)string//(\%([KF1]|)\{*\}|\%[Bbkf])}} 是什么意思

macos - 去安装不使用 zsh