【问题标题】:PHP cURL suddenly not loading on Windows 10 ProPHP cURL 突然无法在 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"

标签: php curl php-curl


【解决方案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】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-14
    • 2018-04-17
    • 2013-02-06
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多