CentOS7服务器上Codeigniter3无法加载自定义库问题排查
CodeIgniter自定义库加载失败问题排查(CentOS7环境)
问题背景
当前使用CentOS7服务器,在CodeIgniter项目的application/libraries目录下放置了自定义库Simas_Bridge.php,代码如下:
class Simas_Bridge { private $CI; private $client; public function __construct() { $this->CI = &get_instance(); $this->CI->load->helper(['file']); $this->client = new \GuzzleHttp\Client(); } public function get_dokumen_drh($nip = null) { ///.... Some Code } }
控制器Form.php中调用该库的代码:
class Form extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('simas_bridge'); } public function uploadFile(){ $this->simas_bridge->get_dokumen_drh('xxxxxxx'); // 报错位置 } }
已尝试操作:
- 修改调用方式为
$this->load->library('Simas_Bridge'),并以$this->Simas_Bridge->get_dokumen_drh()调用 - 将
Simas_Bridge.php文件权限改为750
但始终报错:Unable to load the requested class: Simas_Bridge
可能的原因及解决办法
- 大小写匹配问题:CentOS7文件系统大小写敏感,文件名
Simas_Bridge.php必须和加载时的名称严格对应,正确写法是$this->load->library('Simas_Bridge'),调用时用$this->simas_bridge->get_dokumen_drh()(CodeIgniter会自动将类名转为小写实例名)。检查文件名是否存在大小写拼写错误。 - Guzzle依赖问题:库中使用了
\GuzzleHttp\Client,需确保Guzzle已通过Composer安装(执行composer require guzzlehttp/guzzle),且项目根目录的vendor/autoload.php已在index.php中引入(添加require_once APPPATH.'../vendor/autoload.php';)。 - 权限与所有者问题:除了750权限,还要确认文件所有者为Web服务器运行用户(apache或nginx),执行
chown apache:apache application/libraries/Simas_Bridge.php或chown nginx:nginx application/libraries/Simas_Bridge.php,同时保证application/libraries目录权限为755。 - CodeIgniter缓存问题:若开启了缓存,清除
application/cache目录下的所有文件(执行rm -rf application/cache/*),避免旧加载规则被缓存。 - 类名与文件名一致性:检查类名
Simas_Bridge和文件名是否完全一致,排除拼写、下划线位置等笔误。
内容的提问来源于stack exchange,提问作者Anang Hariyanto N
相关产品推荐
相关产品推荐

