動作環境:Ubuntuの16.04 + Apacheの+ PHP 5.6.40 / 2.4.18
CodeIgniterの:3.1.10
3.1.10 CodeIgniterの、キャッシュファイルのドライブの方法は、方法です
遭遇した問題点は次のとおりです。キャッシュファイルは、キャッシュを読み取ることができませんCLIモード初期化ファイルキャッシュを渡すためにしようと、ブラウザによってコントローラにアクセスするために書き込むことができ、最終的に考えたのは唯一でありcurl
、要求、およびネットワークアクセス内の判断このメソッドを実行します
A PHP Error was encountered
Severity: Warning
Message: file_get_contents(/var/www/html/codeigniter3/application/cache/cache_test): failed to open stream: Permission denied
Filename: /var/www/html/codeigniter3/system/libraries/Cache/drivers/Cache_file.php
Line Number: 275
与えることを試みたcache
のApacheへのフォルダの所有者をwww-data
して与えた755
CLIモードで実行する権限を、まだ上記のエラーを取得します
ソリューション:
でhelpers
ヘルプファイルを置くフォルダとapplication/autoload.php
自動的にヘルプファイルにロードされました
if(!function_exists('get_real_ip')){
function get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!preg_match ("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
}
コントローラ
<?php
/**
* 每天凌晨需要初始化文件緩存
*/
class Init_daily_cache extends MY_Controller {
public function index(){
if(is_cli()){
exit('can not Run at cli');
}
$ip = get_real_ip();
$intranet_ip = array('127.0.0.1','::1');
//可以先调试在当前服务器的ip,然后再修改$intranet_ip 变量的值
//echo $ip;exit();
if(!in_array($ip, $intranet_ip)){
exit('不是内网访问,无须的请求');
}
//code
$this->cache->file->save('cache_test', 'test',3600);
}
}
実行しよう:
vagrant@vagrant:/var/www/html/codeigniter3$ curl http://localhost/codeigniter3/index.php/init_daily_cache
::1