为什么PHP Curl返回T_CONSTANT_ENCAPSED_STRING?

时间:2018-05-06 21:27:19

标签: php json curl

我尝试使用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"
?>

到目前为止,我有:

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

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

1 个答案:

答案 0 :(得分:0)

你的代码示例是二进制文件,要从像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"' 
] ) );