为什么curl在我发布到Twitter的PHP脚本中失败了?

为什么curl在我发布到Twitter的PHP脚本中失败了?,php,curl,Php,Curl,我有一个使用Oauth发布到Twitter的PHP脚本。每当我使用它时,都会出现以下错误: PHP Notice: Use of undefined constant CURLOPT_CAINFO - assumed 'CURLOPT_CAINFO' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 353 PHP Notice: Use of undefined c

我有一个使用Oauth发布到Twitter的PHP脚本。每当我使用它时,都会出现以下错误:

PHP Notice: Use of undefined constant CURLOPT_CAINFO - assumed 'CURLOPT_CAINFO' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 353
PHP Notice: Use of undefined constant CURLOPT_CONNECTTIMEOUT - assumed 'CURLOPT_CONNECTTIMEOUT' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 354
PHP Notice: Use of undefined constant CURLOPT_HEADER - assumed 'CURLOPT_HEADER' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 355
PHP Notice: Use of undefined constant CURLOPT_HTTPHEADER - assumed 'CURLOPT_HTTPHEADER' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 356
PHP Notice: Use of undefined constant CURLOPT_RETURNTRANSFER - assumed 'CURLOPT_RETURNTRANSFER' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 357
PHP Notice: Use of undefined constant CURLOPT_SSL_VERIFYHOST - assumed 'CURLOPT_SSL_VERIFYHOST' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 358
PHP Notice: Use of undefined constant CURLOPT_SSL_VERIFYPEER - assumed 'CURLOPT_SSL_VERIFYPEER' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 359
PHP Notice: Use of undefined constant CURLOPT_TIMEOUT - assumed 'CURLOPT_TIMEOUT' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 360
PHP Notice: Use of undefined constant CURLOPT_URL - assumed 'CURLOPT_URL' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 361
PHP Notice: Use of undefined constant CURLOPT_USERAGENT - assumed 'CURLOPT_USERAGENT' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 362
PHP Notice: Use of undefined constant CURLOPT_ENCODING - assumed 'CURLOPT_ENCODING' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 366
PHP Notice: Use of undefined constant CURLOPT_POST - assumed 'CURLOPT_POST' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 381
PHP Notice: Use of undefined constant CURLOPT_POSTFIELDS - assumed 'CURLOPT_POSTFIELDS' in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 382
PHP Fatal error: Call to undefined function Abraham\TwitterOAuth\curl_init() in /var/www/example.com/myWebApp/vendor/abraham/twitteroauth/src/TwitterOAuth.php on line 397
我在这里搜索了Stack Overflow,看看是否有人已经解决了这个问题,我看到的所有答案(例如,和)都只说我需要安装curl和php5 curl。但是,我已经安装了curl和php5 curl:

# apt-get install php5-curl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
php5-curl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# apt-get install curl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
curl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# php -v
PHP 5.5.36-4+deb.sury.org~precise+1 (cli) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
另一个答案()说,我需要确保引用curl的行没有被注释掉,从而确保在
ini
文件中启用curl。似乎我启用了curl,但没有注释掉:

# grep -n 'extension=curl.so' /etc/php5/conf.d/curl.ini
2:extension=curl.so
据我所知,我已经准备好了我所需要的一切,那么为什么curl对我来说失败了呢

更新:我想知道这是否有影响-我的服务器默认运行PHP5.3,但我需要PHP5.5。我使用命令
apt add repository ppa:ondrej/php
,然后升级到PHP5.5。升级PHP时是否可能丢失了一些curl配置

更新2:我尝试将此代码放在我的服务器上:

echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
。。。当我运行它时,我得到以下输出:

卷曲:已启用

似乎Curl可能被激活并在我的服务器上工作,而问题更具体到Twitter Oauth代码。推特上的大部分代码都来自在线资源——这不是我的——所以我不确定我能做些什么来解决它

更新3:我有一个本地测试服务器,PHP脚本运行良好。因此,当前的情况是PHP代码在一台服务器上运行,而不是在另一台服务器上运行,但是两台服务器都安装了Curl。那么,一台服务器如何能够安装curl而不运行此脚本,而另一台服务器却不能

更新4:根据信息,我尝试安装更多相关库,如下所示:

apt-get install curl libcurl3 libcurl3-dev php5-curl php-curl

不幸的是,这并没有解决问题。

扩展似乎没有加载

您需要做的是:

  • 使用
    php--info | grep-i curl
    检查CLI是否知道扩展名
    php-m
    还将向您展示php cli知道的模块。
    • 如果没有,请使用
      php--info
  • 使用
    并搜索“CURL”,检查web应用程序是否知道它
    • 如果没有,请重新启动Web服务器,例如使用
      服务apache2 restart
      /etc/init.d/apache2 restart
      。这取决于您的发行版/web服务器

卷曲似乎仍然没有加载

  • 尝试在控制台中运行
    php-m
    ,查看是否弹出
    curl
  • 在运行任何curl代码之前,请在应用程序中尝试添加:
以下代码:

if (!extension_loaded('curl')) {
    die('Curl not loaded'); 
}

如果确实是这样,请检查中php.ini的路径,您确定您拥有正确的
ini
文件吗?错误是这样的,当代码运行时没有启用curl!你能在一个简单的单行测试脚本中使用curl函数吗?一旦你运行这一行来确定它是否真的存在,如果它真的存在,你应该找出并分享'Abraham\TwitterOAuth\curl\u init()'到底是什么。@miken32,这个关于特定服务器环境的问题究竟是如何以任何方式重复整个PHP错误输出列表的?请特别注意更新。“PHP致命错误:调用未定义函数”是您的问题。这个错误没有什么独特之处。正如第一条评论所指出的,这意味着您试图调用一个不存在的函数。感谢您的响应。命令
php--info | grep-i curl
不返回任何内容。命令
php--info
返回大量输出,因此我不知道搜索什么。@提问者您必须搜索“curl”。但是命令
php--info | grep-I curl
是否已经搜索“curl”?如果该命令没有返回任何结果,那么我可以通过运行
php--info
并以其他方式搜索来为“curl”提供资金吗?