Php Twilio api分析错误:意外的T#CONST,应为T#OLD#u函数或T#u函数或T#VAR或';}';

Php Twilio api分析错误:意外的T#CONST,应为T#OLD#u函数或T#u函数或T#VAR或';}';,php,constants,user-agent,twilio,Php,Constants,User Agent,Twilio,我有PHP5.4.21 我使用的Twilio API在浏览器上运行良好,但在命令行模式下,出现以下错误: <b>Parse error</b>: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>sms/Services/Twilio.php</b> on line <b>36</b>

我有PHP5.4.21

我使用的Twilio API在浏览器上运行良好,但在命令行模式下,出现以下错误:

<b>Parse error</b>:  syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>sms/Services/Twilio.php</b> on line <b>36</b>
解析错误:语法错误,意外的T_常量,第36行的sms/Services/Twilio.php中应为T_OLD_函数或T_函数或T_VAR或'}'
指定文件的第36行是以下类的一部分,请参阅我在其中指定第36行的注释

根据一些显示这些行的初始反馈请求,我为上下文添加了第36行之前和之后的所有代码行

<?php
function Services_Twilio_autoload($className) {
    if (substr($className, 0, 15) != 'Services_Twilio') {
        return false;
    }
    $file = str_replace('_', '/', $className);
    $file = str_replace('Services/', '', $file);
    return include dirname(__FILE__) . "/$file.php";
}

spl_autoload_register('Services_Twilio_autoload');

/**
 * Create a client to talk to the Twilio API.
 *
 *
 * :param string               $sid:      Your Account SID
 * :param string               $token:    Your Auth token from
 *      twilio.com/user/account
 * :param string               $version:  API version to use
 * :param $_http:    A HTTP client for making requests.
 * :type $_http: :php:class:`Services_Twilio_Http`
 * :param int                  $retryAttempts:
 *      Number of times to retry failed requests. Currently only idempotent
 *      requests (GET's and DELETE's) are retried .
 */

class Services_Twilio extends Services_Twilio_Resource
{
    /* this is Line 36... */
    const USER_AGENT = 'twilio-php/3.12.0';

    protected $http;
    protected $retryAttempts;
    protected $last_response;
    protected $version;
    protected $versions = array('2008-08-01', '2010-04-01');

    public function __construct(
        $sid,
        $token,
        $version = null,
        Services_Twilio_TinyHttp $_http = null,
        $retryAttempts = 1
    ) {
              $_http = new Services_Twilio_TinyHttp(
                  "https://api.twilio.com",
                  array("curlopts" => array(
                      CURLOPT_USERAGENT => self::USER_AGENT,
                      CURLOPT_HTTPHEADER => array('Accept-Charset: utf-8'),
                      CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem',
                  ))
              );
    }
}
?>

来自我的原始评论:

据我所知,最可能的解释是,您的命令行正在运行与web服务器不同的PHP版本。尝试在命令行中运行php-v,以确认它运行的是您期望的版本

OP的回应

@Spudley,谢谢你的反馈。看来你是唯一一个真正阅读我的帖子而不做假设的人。正如你所说,我运行了“php-v”,下面是我得到的,所以很明显我运行的是php的早期版本:PHP4.4.9(cgi fcgi)(构建:2013年7月22日09:48:43)版权(c)1997-2008 php组Zend Engine v1.3.0,版权(c)1998-2004 Zend Technologies

好了,这显然是问题所在。这里有PHP4.4。这需要取消

解决方案:摆脱旧版本的PHP,并确保命令行PHP与web服务器运行的版本相同

您还没有指定正在运行的操作系统,这显然会对如何进行卸载产生很大影响


如果你能在你的un安装工具中找到旧的PHP版本,那么就去做吧,希望你能通过magic找到新的PHP版本。如果没有,那么根据配置方式,您可能会发现实现这一点的最简单方法是取消安装两个PHP版本,然后重新安装5.4版本。

从这行末尾删除逗号可能是:CURLOPT_CAINFO=>dirname(FILE)。'/cacert.pem',?@Maximus2012-你可以在数组的末尾加一个逗号。@andrewsi我不知道。谢谢您指出这一点。@OP-如果您能在代码中添加一条注释,准确地说出哪一行是第36行,那将很有帮助。解析错误仍然存在,谢谢!不幸的是,这是在1和1的服务器上,所以我无法控制php版本。这只是移动到aws或其他主机的另一个原因。什么???1和1是否为您提供了带有PHP4的服务器???是的,你需要给他们写一封糟糕的电子邮件,然后找一个更好的主人。