【问题标题】:Why is PHP Curl returning T_CONSTANT_ENCAPSED_STRING?为什么 PHP Curl 返回 T_CONSTANT_ENCAPSED_STRING?
【发布时间】:2018-10-16 16:43:40
【问题描述】:

我正在尝试使用 PHP 通过 JSON 从 CallRail.com API 获取数据。

但是,直接在浏览器中预览我的 PHP 文件时出现此错误:T_CONSTANT_ENCAPSED_STRING

我的代码:

<?
curl -H "Authorization: Token token={my-token-id}" \
-X GET \
"https://api.callrail.com/v2/a/{my-account-id}/calls.json"
?>

到目前为止我有:

  • 阅读severalarticlesrelated 错误,但没有找到解决方案或可验证准确的解释。
  • 我已经手动重新输入了所有代码,以确保我没有任何不正确编码的字符或无效的空格。
  • 我也尝试找到official documentation in the PHP docs,但没有找到任何有用的信息。
  • 我已经在一个空白 PHP 文件中对此进行了测试,因此代码是完全隔离的。

我不知道如何进一步调试此问题,希望有人能找出问题所在,或分享我自己的调试步骤。

【问题讨论】:

  • 你的完整代码是什么?
  • 你的 php 代码在哪里?
  • 这是我的完整代码。它在一个 PHP 文件中。
  • 那不是 php。它用于命令行。 @SpencerHill 这就是您遇到语法错误的原因。
  • 以上是命令行curl,不是php的curl。

标签: php json curl


【解决方案1】:

您的代码示例是二进制的,可以从命令行在 Bash 等 shell 中执行,而不是 PHP。这就是您收到该错误的原因。

如果您希望 PHP 调用外部二进制文件,请使用 exec()shell_exec()system()

另外,为了可移植性,永远不要使用short open tags,因为它取决于short_open_tag php.ini 指令,或者PHP 是否使用--enable-short-tags 编译。

即使您的代码不必是可移植的,这也只是一个坏习惯。如果您将来需要使用一些可移植的 PHP 代码;试试:

<?php
echo shell_exec('curl -H "Authorization: Token token={my-token-id}" -X GET "https://api.callrail.com/v2/a/{my-account-id}/calls.json"');

或者如果你想多行,你可以使用 implode:

<?php
echo shell_exec ( implode ( " ", [ 
        'curl',
        '-H "Authorization: Token token={my-token-id}"',
        '-X GET',
        '"https://api.callrail.com/v2/a/{my-account-id}/calls.json"' 
] ) );

【讨论】:

  • 好的,谢谢。据我了解,“二进制”只是指任何和所有代码。所以你不是说“bash”吗?另外,我不知道什么是短开放标签,或者它是如何相关的。你能在你的回答中澄清一下吗?
猜你喜欢
  • 2011-09-13
  • 2023-04-10
  • 2017-11-25
  • 2017-07-05
  • 1970-01-01
  • 2011-07-27
  • 2014-03-27
  • 2018-10-08
  • 2013-06-09
相关资源
最近更新 更多