PHP从5.3升级至7.0.29后curl_init未定义,php.ini指向错误求助
解决PHP升级后php.ini路径错误及
curl_init()未定义问题 我来一步步帮你搞定这两个问题——这是IIS环境下升级PHP时特别常见的坑:
一、修正系统环境变量,让命令行指向新PHP版本
系统的PATH变量优先级决定了命令行会调用哪个版本的PHP,咱们先把新PHP路径放到最前面:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里找到
PATH,点击「编辑」 - 把你新安装的PHP 7.0.29根目录路径(比如
C:\PHP\v7.0.29)移到PATH列表的最顶端;同时删掉或移到后面旧版本的PHP路径(比如你提到的C:\Program Files\iis express\PHP\v7.1) - 保存所有设置后,必须关闭所有已打开的DOS窗口,重新打开一个新窗口,执行
php --version确认显示的是7.0.29版本,再执行php --ini就能看到指向新的php.ini文件了
二、配置IIS关联新PHP版本
光改环境变量还不够,IIS本身也需要绑定新的PHP:
- 打开IIS管理器,找到你的网站对应的「处理程序映射」
- 找到名称类似
PHP_via_FastCGI的规则,右键选择「编辑」 - 将「可执行文件」的路径改为新PHP版本的
php-cgi.exe路径(比如C:\PHP\v7.0.29\php-cgi.exe) - 如果你装了IIS的「PHP管理器」(没装的话可以直接从微软官方渠道安装,操作很方便),直接打开PHP管理器,选择「设置PHP版本」,选中7.0.29即可,它会自动帮你关联对应的php.ini和处理程序映射
三、开启curl扩展解决curl_init()未定义报错
升级后curl扩展默认通常是关闭的,需要手动开启:
- 找到新PHP 7.0.29目录下的配置文件:默认安装时会有
php.ini-development或php.ini-production,复制其中一份并重命名为php.ini - 打开这个
php.ini,找到;extension=php_curl.dll这一行,把前面的分号;去掉(分号是注释符号,去掉就代表启用该扩展) - 检查
extension_dir的配置,确保指向正确的扩展目录:- 如果ext文件夹在PHP根目录下,直接写
extension_dir = "ext"即可 - 也可以用绝对路径,比如
extension_dir = "C:\PHP\v7.0.29\ext"
- 如果ext文件夹在PHP根目录下,直接写
- 保存php.ini后,重启IIS服务;同时在命令行执行
php -m,查看输出列表里有没有curl,确认扩展已成功开启
最后提个小细节:要确保新PHP目录的权限设置正确,让IIS应用池的用户(比如IIS_IUSRS)有读取该目录的权限,避免出现权限相关的隐性问题。
内容的提问来源于stack exchange,提问作者Ab Bennett
相关产品推荐
相关产品推荐

