无法在 Linux 上的 PHP 中启用 cURL 支持
Posted
技术标签:
【中文标题】无法在 Linux 上的 PHP 中启用 cURL 支持【英文标题】:Cannot get cURL support enabled in PHP on Linux 【发布时间】:2011-07-16 06:47:05 【问题描述】:cURL 不会出现在 phpinfo() 中,并且即使在确保以下内容后也会在 PHP 脚本中失败:
curl.so 确实存在于 /usr/lib/php/modules/curl.so 以及我的其他成功运行的 PHP 模块中。
/usr/lib/php/modules/curl.so 是系统上唯一可以找到 curl.so 的位置。
extension=curl.so 在 php.ini 中未注释
/etc/php/php.ini 是系统中唯一可以找到 php.ini 的位置。
我重启了我的网络服务器几次。
phpinfo 配置命令显示:'--with-curl=shared'
但是,显示“curl”设置(通常在其他系统上的 phpinfo 中找到)的蓝色大块没有出现。此外,function_exists('curl_init') 在 PHP 内部返回 false。
我一定错过了什么……但是什么?
非常感谢您的帮助!
【问题讨论】:
请检查您的 phpinfo() 输出是否显示 php.in 的路径为 /etc/php/php.ini? curl=shared 意味着它将寻找 curl 的库作为系统的一部分。您是否确保 curl 和 curl 库安装在系统级别?另外,您的 php.ini 中的扩展目录是否指向正确的位置? @anubhava:加载的配置文件显示 /etc/php/php.ini @Charles:我通过 Arch Linux 包管理器安装了 curl 和 php-curl:pacman -S curl 和 pacman -S php-curl,我也明确地为他们列出的所有依赖项做了这个万一奇怪的事情阻止了他们自动解决依赖关系。 【参考方案1】:dl("curl.so");
即使使用库的完整路径,也请最终尝试此操作。并检查这是否适用于命令行。如果 .so 与您的 PHP 解释器不兼容(或以其他方式损坏),那么您将不会在 phpinfo 脚本的输出中看到任何消息。如果从 php.ini 中引用 PHP,则 PHP 会以其他方式静默失败。任何问题只会出现在控制台或 Apache 错误日志中。
【讨论】:
致命错误:调用未定义函数 dl()...us2.php.net/dl 的 PHP 文档说“此函数已从 PHP 5.3 中的某些 SAPI 中删除。” 是的。用 CLI 版本试试(为了我们的测试目的)。那里仍然允许。 好的,我明白了:PHP 警告:模块 'curl' 已加载到第 0 行的未知中 这很奇怪。在 CLI 版本中测试var_dump(function_exists("curl_init"));
。
难以置信。我对服务器进行了软重启,它立即工作。自我注意:永远不要相信 /etc/rc.d/nginx restart以上是关于无法在 Linux 上的 PHP 中启用 cURL 支持的主要内容,如果未能解决你的问题,请参考以下文章
在 Xampp for WinXP 上的 php.ini 中启用 curl 时出现问题