PHP cURL 突然无法在 Windows 10 Pro 上加载

Posted

技术标签:

【中文标题】PHP cURL 突然无法在 Windows 10 Pro 上加载【英文标题】:PHP cURL suddenly not loading on Windows 10 Pro 【发布时间】:2018-10-26 05:11:47 【问题描述】:

一个简单的php_curl example 不再在我的 Windows 10 笔记本电脑上工作。它以前工作过。

Fatal error: Uncaught Error: Call to undefined function curl_init() in C:\Users\path\curl.php:3 Stack trace: #0 main thrown in C:\Users\path\curl.php on line 3

我的 C:\php7\php.ini 有 extension=C:\php7\ext\php_curl.dll php_curl.dll 存在于 C:\php7\ext

PHP 版本 7.0.30 Windows 10 专业版 1607 内部版本 14393.2189

但是我的 loclahost/phpinfo.php 没有 cURL。怎么突然不见了?

PS:脚本在命令行中运行。只是 Apache 没有加载扩展。

【问题讨论】:

您的 Apache 安装在哪里。查看那里的bin 文件夹,您可能会找到另一个php.ini 文件。这就是 PHP 在 Apache 下运行时所使用的 要绝对确定 PHP 从哪里获取其配置,请查看 phpinfo() 在标记为 Loaded Configuration File 的项目的输出 C:\php7中的php.ini文件通常只用于配置PHP CLI 加载的配置文件:C:\php7\php.ini 这是我在 httpd.conf 文件中添加的内容:AddHandler application/x-httpd-php .php AddType application/x-httpd-php .php .html LoadModule php7_module "c:/php7/php7apache2_4.dll" PHPIniDir "c:/php7" 【参考方案1】:

不知道为什么是suddenly stopped working,但是先运行<?php phpinfo(~0);,然后检查实际加载的是哪个php.ini文件(这样可以避免编辑错误的php.ini文件无效)(在这个例子,它是/etc/php/7.0/fpm/php.ini),然后编辑那个php.ini文件,如果那个文件确实有extension=C:\php7\ext\php_curl.dll这一行,那么以下设置的某些组合设置错误:

display_startup_errorsOff,改成On

display_errorsOff,改成On

error_reporting 不是E_ALL,将其更改为error_reporting=E_ALL(没有别的,不像error_reporting= E_ALL & ~E_NOTICE 或其他什么,只是E_ALL)

html_errorsOff,改成On

然后重启apache,再次查看phpinfo()页面,确认新的配置选项确实被加载了,然后运行<?php curl_init();,应该会显示为什么curl扩展无法加载的错误。

【讨论】:

检查了您的所有状态。加载的配置文件是 C:\php7\php.ini 。所有设置为 On、On、E_ALL 和 On。 \Users\anjan>C:\Apache24\bin\httpd.exe 启动时没有任何错误。 @anjanesh 以及当您加载包含 <?php echo "start."; $ch=curl_init(); var_dump($ch); echo "end.";?> 的页面时会发生什么? 开始。致命错误:未捕获错误:调用 C:\Users\path\test\curl.php:3 中未定义的函数 curl_init() 堆栈跟踪:#0 main 在 C:\Users\path\test\curl.php 中抛出在第 3 行 @anjanesh 嗯,error_log 是空的,所以任何错误都会发送到 apache 的错误日志。 apache 的httpd.confErrorLog 指令是什么意思? (在 xampp 上,默认为 ErrorLog "logs/error.log" ErrorLog "logs/error.log" [Fri May 18 18:43:42.211169 2018] [:error] [pid 10844:tid 1160] [client ::1:52046] PHP 致命错误:未捕获的错误:调用 C:\\Users\\anjan\\Dropbox\\vhosts\\planbuildr\\test\\curl.php:3\n堆栈跟踪:\n#0 main\ 中未定义的函数 curl_init() n 在第 3 行抛出 C:\\Users\\anjan\\Dropbox\\vhosts\\planbuildr\\test\\curl.php【参考方案2】:

我在其他 *** 答案中发现了一些链接(如果我再次跟踪它们,将在此处发布链接)。我有 Apache 2.4.23 Win64 - 我将 Apache 重新安装到最新版本 - 2.4.33 Win64 - 现在 cURL 可以工作了。

【讨论】:

以上是关于PHP cURL 突然无法在 Windows 10 Pro 上加载的主要内容,如果未能解决你的问题,请参考以下文章

无法启用 CURL - Windows 7 64 位上的 WAMP - PHP 5.3.13 Apache 2.2.22

Apache 2.4.23 PHP7.x Windows 10 x64 php_curl 不工作

如何在 Xampp Windows 10 上重新安装 PHP cURL?

无法让 curl 在 wamp 中工作

php curl

Windows上的PHP / cURL安装:“找不到指定的模块。”