PHP进程无法加载gettext模块问题求解(兼容Xdebug)
解决Mac下PHP gettext警告+保留Xdebug正常工作的方案
问题本质
你用的PHP是编译时就把gettext集成进去了——从PHPinfo里的--with-gettext=/usr/local/opt/gettext就能看出来,这说明gettext是PHP的内置模块,不是那种需要单独动态加载的扩展。
你之前取消;extension=gettext的注释,相当于让PHP去extension_dir(也就是你设的/usr/local/lib/php/pecl/20220829)找gettext的动态库文件,但这个目录只有Xdebug的xdebug.so,找不到gettext的库,所以才弹警告。而注释掉那行之后extension_loaded('gettext')返回true,也实锤了gettext本来就能用,根本不需要手动开动态扩展。
操作步骤
- 把php.ini里的
extension=gettext重新注释回去(保持;extension=gettext的状态) - 别改
extension_dir的设置,依然留成/usr/local/lib/php/pecl/20220829,保证Xdebug能正常加载 - 验证效果:
- 执行
php -m,确认输出列表里同时有gettext和xdebug - 运行代码
var_dump(extension_loaded('gettext'))和var_dump(extension_loaded('xdebug')),两者都应返回bool(true) - 重启你的PHP服务(比如Apache、PHP-FPM),确认启动时不再出现gettext相关警告
- 执行
额外小技巧
要是以后分不清某个扩展是内置还是动态加载类型,直接执行php -i | grep -A 5 gettext,看输出里有没有Shared support => yes——如果没有,就说明是内置模块,不需要在php.ini里加extension=那行配置。
内容的提问来源于stack exchange,提问作者DevelJoe
相关产品推荐
相关产品推荐

