【问题标题】:PHP 5.6 will not run CURLPHP 5.6 不会运行 CURL
【发布时间】:2017-11-28 15:46:49
【问题描述】:

我有 Ubuntu 12.04 和 PHP 5.6.11 并运行 Apache/2.4.12。我已经通过运行安装了 CURL

sudo apt-get install php5-curl 

并重新启动:sudo service apache2 restart

在命令行我输入curl -V 并得到以下信息:

curl 7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

当我输入which curl 时,我得到以下信息:/usr/bin/curl

所以我相当肯定 curl 已经安装了。

当我在从 Web 浏览器调用的 php 页面上使用 phpinfo() 时,没有阻止 curl 和任何对 curl 的引用。

我的理解是,基于 question/answer 的 curl 应该可以正常工作,而无需进行任何配置更改,这显然不是这种情况。

谁能指出我修改 PHP 配置文件的正确方向,或者我需要运行哪些命令才能让 CURL 在我的版本上与 PHP 一起运行?

附件是在 phpinfo() 中找到的配置文件位置

Configuration File (php.ini) Path   /etc/php5/apache2

Loaded Configuration File   /etc/php5/apache2/php.ini

Scan this dir for additional .ini files /etc/php5/apache2/conf.d

Additional .ini files parsed    /etc/php5/apache2/conf.d/05-opcache.ini, /etc/php5/apache2/conf.d/10-pdo.ini, /etc/php5/apache2/conf.d/20-json.ini, /etc/php5/apache2/conf.d/20-mysql.ini, /etc/php5/apache2/conf.d/20-mysqli.ini, /etc/php5/apache2/conf.d/20-pdo_mysql.ini, /etc/php5/apache2/conf.d/20-readline.ini

【问题讨论】:

  • 您可能需要a2enmod curl 或类似的东西。检查phpinfo() 输出中显示的.ini 文件/目录,看看它是否在此处正确加载。
  • 你能说得更具体些吗?我更新了 phpinfo() 中引用的配置文件。谢谢。
  • 您是否启用了curl 扩展?在您的 PHP 配置中检查 extension=curl.so
  • 因为接受的答案 also 说“如果在其中使用 ;(分号) 进行注释,您可能必须在 php.ini 中启用它”,而您没有在您的帖子中提到,并且很可能是原因。

标签: php apache ubuntu curl


【解决方案1】:

首先,检查扩展是否已安装(带有相关示例输出):

$ sudo find / -name curl.so\*
/usr/lib64/php/7.0/modules/curl.so

然后,检查扩展是否已启用(再次显示相关输出):

$ grep -Ri curl /etc/php*
/etc/php.d/20-curl.ini:extension=curl.so

如果第一个命令没有产生任何输出,那么该模块没有安装。您需要诊断系统包管理器未安装该包的原因。对于 Ubuntu,您可能需要运行 sudo apt-get update

如果第一个命令有效,但第二个无效,则需要启用扩展,然后重新启动 Apache:

echo 'extension=curl.so' | sudo tee /etc/php5/apache2/conf.d/99-curl.ini

【讨论】:

  • 我有一个 20-json.ini 但没有 99*
  • 对不起,错字。固定的。此命令旨在创建一个新文件,以启用扩展。
  • 没问题,然后重启apache?这是永久修复吗?
  • 是的,重新启动,是的,永久的。对于 CLI 配置,您可能需要类似的行,我猜它在 /etc/php5/cli/conf.d 中。 (我不使用 Ubuntu,所以我在这里猜测。练习判断。)
  • 嗯......它似乎已经添加,但我仍然在 phpinfo() 中看到没有 curl 块
【解决方案2】:

你可以试试这个。 sudo php5enmod curl

或者,

检查您的 php.ini 文件。 在页面中查找extension=php_curl 如果有; 符号,删除行首的这个符号。

【讨论】:

  • 嗯。 php.ini 文件中 curl 行是否有 ; 符号?
  • 不,我在 php.ini 上进行了搜索,只有这个: [curl] ; CURLOPT_CAINFO 选项的默认值。这必须是 ;绝对路径。 ;curl.cainfo =
【解决方案3】:

假设你最初是通过 apt-get 安装了 apache & mod-php,正确,应该足够了,在这种情况下,我最好的猜测是确实安装了 curl,但是在初始化时出错,并且 @987654321 @ 已关闭。启用display_startup_errors,重新启动apache,加载一个php页面,检查你的错误日志,那里可能有一行说明为什么无法加载curl模块。

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 2016-03-17
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多