必须确认PHP所有必需扩展真实启用并生效,缺一即导致composer create-project卡死、artisan启动失败或加密失效;执行php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|ctype|json|curl|intl|opcache)"逐项核验,再用php -r "print_r(openssl_get_cipher_methods());"和php -r "var_dump(function_exists('curl_init'));"验证OpenSSL与cURL功能可用性,最后通过php --ini定位并修改对应php.ini中extension=行,重启服务生效。

升级 Laravel 11 前必须确认 PHP 扩展已全部启用并真实生效,缺一个扩展就会导致 composer create-project 卡死、artisan 启动失败或加密功能静默失效,不能只看 php.ini 里有没有 extension= 行就认为万事大吉。
用命令行快速核验必需扩展是否加载
在终端执行:php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|ctype|json|curl|intl|opcache)",输出结果中必须每一项都出现——注意:Linux/macOS 用户需确保 grep 支持 -E;Windows 用户直接运行 php -m,然后肉眼逐行查找这 10 个模块名,【intl 和 opcache 在 Windows 下最容易漏,尤其 XAMPP 默认不启用 intl】。
如果某项没输出,说明该扩展未加载成功,不是“装了就行”,而是根本没进运行时环境。
验证 OpenSSL 和 cURL 是否真正可用
扩展存在 ≠ 功能可用。很多用户卡在 Composer 下载中断或 Laravel HTTP 客户端报错,根源是 openssl 或 curl 虽已启用但底层 DLL/so 加载失败或证书路径错误。
运行:php -r "print_r(openssl_get_cipher_methods());",有数组输出才算 OpenSSL 可用;若报错或空输出,说明 openssl.cafile 配置错误或依赖的 libssl.dll 缺失。
运行:php -r "var_dump(function_exists('curl_init'));",返回 bool(true) 才算 cURL 正常。若为 false,检查 php.ini 中 curl.cainfo 是否指向有效的 cacert.pem 文件(可从 https://curl.se/ca/cacert.pem 下载并配置)。
确认 php.ini 路径与实际生效配置
第一步:执行 php --ini,记下 “Loaded Configuration File” 对应的完整路径,比如 C:\php82\php.ini 或 /usr/local/etc/php/8.2/php.ini。
第二步:用文本编辑器打开该文件,搜索以下行并确保前面没有分号:
extension=mbstringextension=opensslextension=pdo_mysqlextension=xmlextension=intlzend_extension=opcache
【改完 php.ini 后必须重启 Web 服务(Apache/Nginx)或终端(CLI 模式),否则修改完全无效】
第三步:再次运行 php -m 确认变更已落地。Windows 用户常见错误是改了错误的 php.ini(比如同时存在 Apache 和 CLI 两套配置),务必以 php --ini 输出为准。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











