我有以下函数用于检查目录是否可写。
/**
* check if the path is writable. if the path is a folder it creates a test file.
*
* @param string $path
* @return boolean
*/
public static function is_writable( $path ) {
//will work in despite of Windows ACLs bug
//NOTE: use a trailing slash for folders!!!
//see http://bugs.php.net/bug.php?id=27609
//see http://bugs.php.net/bug.php?id=30931
if ( $path{strlen($path)-1} === DIRECTORY_SEPARATOR ) {// recursively return a temporary file path
return self::is_writable( $path . uniqid( mt_rand() ) . '.tmp' );
} else if ( is_dir( $path ) ) {
return self::is_writable( $path . DIRECTORY_SEPARATOR . uniqid( mt_rand() ) . '.tmp' );
}
$file_already_exists = file_exists( $path );
// check tmp file for read/write capabilities
$f = @fopen( $path, 'a');
if ( $f === false ) {
return false;
}
if ( ! $file_already_exists ) {
unlink( $path );
}
return true;
}
这一直很好,直到最近我总是收到警告,因为unlink()
没有删除文件的权限。但是临时文件是正常创建的,所以我可以写入目录。
警告:取消链接(C:\Program Files (x86)\Zend\Apache2\htdocs\wordpress\wp-content\plugins\all-in-one-event-calendar-premium\cache\152006398050813468bb6ec.tmp)[function.unlink] : C:\Program Files (x86)\Zend\Apache2\htdocs\wordpress\wp-content\plugins\all-in-one-event-calendar-premium\lib\utility\class-ai1ec-filesystem-utility 中的权限被拒绝.php 在第 35 行
这怎么可能?我试图将 777 提供给我正在测试的目录,但我仍然收到警告!我在带有 Zend 服务器的 Windows 7 上