chmod() has been disabled for security reasons


最近用 codeigniter 寫一個小系統,引用了session 庫,codeigniter默認的session存儲方式為files。鑒於安全性,文件即肯定涉及到權限問題。

在類 UNIX 操作系統中,這可以通過在該目錄上執行 chmod 命令,將權限設置為 0700 來實現, 這樣就可以只允許目錄的所有者執行讀取和寫入操作。但是要注意的是,腳本的執行者通常不是你自己, 而是類似於 'www-data' 這樣的用戶,所以只設置權限可能會破壞你的程序。

但用戶買的是萬網的虛擬主機,默認是沒有開啟 chmod 函數的設置。於是就碰到了這個問題:"chmod() has been disabled for security reasons"。解決方法有兩個:

1.開啟設置

登錄萬網虛擬主機控制面板:點擊左側【高級環境設置】->【php.ini設置】,將【chmod函數】設置為開啟。

2.更換session存儲方式為數據庫驅動

在config.php文件里設置

$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';

要求在數據庫中建表:ci_sessions,如MySql:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    KEY `ci_sessions_timestamp` (`timestamp`)
);

參考資料

http://codeigniter.org.cn/user_guide/libraries/sessions.html
https://help.aliyun.com/knowledge_detail/36434.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM