我正在使用phpfastcache https://github.com/khoaofgod/phpfastcache/
当我尝试删除缓存时出现错误
Warning: unlink(C:\...//sqlite/indexing): Permission denied in C:\...drivers\sqlite.php on line 328
当进程没有释放这些文件的句柄时,我通常会看到这种错误。
重现
的步骤// Require phpfastcache
require_once 'phpfastcache_v2.1_release\phpfastcache\phpfastcache.php';
// Simple singleton
class MyCache extends phpFastCache
{
private static $istance;
Private $obCache;
function __construct()
{
$option = array('securityKey' => 'aCache', 'path' => dirname(__FILE__));
$this->obCache = parent::__construct('sqlite', $option);
}
public static function getIstance()
{
if( is_null(self::$istance) )
{
self::$istance = new self();
}
return self::$istance;
}
}
// check if cached
if( $CacheData = MyCache::getIstance()->get('aKeyword') )
{
die('Cached');
}
// store in cache
MyCache::getIstance()->set('aKeyword','aValue', 60*60*24);
// clean cache (throw error)
MyCache::getIstance()->clean();
die('No cached');
这是生成错误的“phpfastcache”方法
function driver_clean($option = array()) {
// delete everything before reset indexing
$dir = opendir($this->path);
while($file = readdir($dir)) {
if($file != "." && $file!="..") {
unlink($this->path."/".$file);
}
}
}
有谁知道如何解决这个问题?
我暂时使用@unlink()
我试过但没有改变
chmod($this->path."/".$file, 0777);
unlink($this->path."/".$file);
更新
我在窗户下......
更新2
我在使用管理员权限运行安装后,使用管理员帐户安装了XAMPP ...
更新3
解决方案:
function driver_clean($option = array()) {
// close connection
$this->instant = array();
$this->indexing = NULL;
// delete everything before reset indexing
$dir = opendir($this->path);
while($file = readdir($dir)) {
if($file != "." && $file!="..") {
unlink($this->path."/".$file);
}
}
}
答案 0 :(得分:1)
(在Windows下不起作用)尝试在以下情况下更改权限:
chmod($yourfile, '0777');
unlink($yourfile);
答案 1 :(得分:1)
解决方案取决于为脚本提供服务的环境。
如果是CLI,则创建,删除或修改文件的能力由执行用户控制。
如果它是一个PHP堆栈(WAMP,XAMPP,ZendServer或自己的Web服务器+ PHP + MySQL-Stack),执行层(apache,nginx)必须使用有权做你想做的事情的用户。
在这两种情况下,它取决于您配置的内容或继承到脚本,目录或驱动器的内容。
可在此处找到权限知识:http://technet.microsoft.com/en-us/library/cc770962.aspx