必须先确认php底层扩展已正确加载,而非仅修改yii配置;通过php -m检查扩展是否启用,核对web sapi实际生效的php.ini路径,确保extension=php_redis.dll(windows)或extension=redis.so(linux/macos)存在且版本兼容php 5.2–5.6,最后重启web服务并用var_dump(extension_loaded('redis'))验证。

Yii1.1.32项目部署后扩展模块(如redis、memcache、gd等)报“Class not found”或“extension not loaded”,说明PHP底层扩展未被正确载入,而非Yii代码配置问题。这一步必须在Web服务器启动前完成,否则后续所有模块调用都会失败。
确认扩展是否已安装并启用
在终端执行:php -m | grep -i "redis\|memcache\|gd\|mbstring",查看目标扩展名是否出现在输出列表中。
若无输出,说明扩展根本未安装——不要跳过这步直接改配置,否则所有调试都是徒劳。
Windows用户检查php.ini中对应行是否取消注释,例如extension=php_redis.dll;Linux/macOS用户需确认extension=redis.so存在且路径正确。
验证php.ini实际生效路径
创建临时文件info.php,内容为<?php phpinfo(); ?>,通过浏览器访问该文件,搜索“Loaded Configuration File”项。
【关键】很多部署失败源于改错了php.ini——CLI模式和Web SAPI(如Apache/Nginx+PHP-FPM)可能使用不同配置文件。Web访问看到的路径才是Yii运行时真正读取的配置。
若该路径下没有扩展启用指令,即使CLI中php -m显示已加载,Yii仍会报错。
检查扩展依赖与版本兼容性
Yii1.1.32要求PHP 5.2–5.6,但部分新编译的扩展(如redis 5.0+)仅支持PHP 7.0+,强行加载会导致PHP进程崩溃或静默失效。
执行php -v确认PHP版本,再前往PECL官网下载匹配的扩展包(例如PHP 5.6选redis-2.2.8.tgz)。
Linux下解压后进入目录执行phpize && ./configure && make && sudo make install,生成的redis.so会自动放入extension_dir指定路径。
重启Web服务并验证Yii加载
Apache用户执行:sudo apachectl restart;Nginx+PHP-FPM用户执行:sudo service php-fpm restart && sudo nginx -s reload。
重启后再次访问info.php,确认扩展已出现在“Registered PHP Streams”或模块列表中。
最后,在Yii入口文件index.php顶部添加:var_dump(extension_loaded('redis'));,刷新页面看是否返回bool(true)——这是Yii能调用扩展的唯一前提。











