可能有的xp分区是ntfs分区,权限有限
解决方案 »
- PHP 检测进程是否存在
- 传承php168经典,引领CMS潮流,php168整站系统2008版正式发布!!
- 如何写这个SQL语句
- www.haoshai.com 好晒网 主要是晒工资的 我刚学php开发着连手的 大家给点意见啊!谢谢!
- gd库缺少啥呢?
- 急急急!!!!!图片上传显示不正确的问题
- 字符串类型转换时,01 和 2 各代表什么意思?%01.2f
- 一个如何判断时间类型的?
- 谁有电子商务的需求分析设计
- 我现在有一个ASP得项目要移植到Linux下,所以想全部改成PHP的,我对这些都不了解,有没有高手来指导一下?
- 用GD库ImageTTFText生成图片,什么中文字体是单一颜色
- php 初级小提问
* 文件或目录权限检查函数
*
* @access public
* @param string $file_path 文件路径
* @param bool $rename_prv 是否在检查修改权限时检查执行rename()函数的权限
*
* @return int 返回值的取值范围为{0 <= x <= 15},每个值表示的含义可由四位二进制数组合推出。
* 返回值在二进制计数法中,四位由高到低分别代表
* 可执行rename()函数权限、可对文件追加内容权限、可写入文件权限、可读取文件权限。
*/
function file_mode_info($file_path)
{
/* 如果不存在,则不可读、不可写、不可改 */
if (!file_exists($file_path))
{
return false;
}
$ = 0;
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
/* 测试文件 */
$test_file = $file_path . '/cf_test.txt';
/* 如果是目录 */
if (is_dir($file_path))
{
/* 检查目录是否可读 */
$dir = @opendir($file_path);
if ($dir === false)
{
return $; //如果目录打开失败,直接返回目录不可修改、不可写、不可读
}
if (@readdir($dir) !== false)
{
$ ^= 1; //目录可读 001,目录不可读 000
}
@closedir($dir);
/* 检查目录是否可写 */
$fp = @fopen($test_file, 'wb');
if ($fp === false)
{
return $; //如果目录中的文件创建失败,返回不可写。
}
if (@fwrite($fp, 'directory access testing.') !== false)
{
$ ^= 2; //目录可写可读011,目录可写不可读 010
}
@fclose($fp);
@unlink($test_file);
/* 检查目录是否可修改 */
$fp = @fopen($test_file, 'ab+');
if ($fp === false)
{
return $;
}
if (@fwrite($fp, "modify test.\r\n") !== false)
{
$ ^= 4;
}
@fclose($fp);
/* 检查目录下是否有执行rename()函数的权限 */
if (@rename($test_file, $test_file) !== false)
{
$ ^= 8;
}
@unlink($test_file);
}
/* 如果是文件 */
elseif (is_file($file_path))
{
/* 以读方式打开 */
$fp = @fopen($file_path, 'rb');
if ($fp)
{
$ ^= 1; //可读 001
}
@fclose($fp);
/* 试着修改文件 */
$fp = @fopen($file_path, 'ab+');
if ($fp && @fwrite($fp, '') !== false)
{
$ ^= 6; //可修改可写可读 111,不可修改可写可读011...
}
@fclose($fp);
/* 检查目录下是否有执行rename()函数的权限 */
if (@rename($test_file, $test_file) !== false)
{
$ ^= 8;
}
}
}
else
{
if (@is_readable($file_path))
{
$ ^= 1;
}
if (@is_writable($file_path))
{
$ ^= 14;
}
}
return $;
}
exit;
echo "after exit";function file_mode_info($file_path)
{
echo $file_path;
echo "<br>";
echo "step 01<br>";
/* 如果不存在,则不可读、不可写、不可改 */
if (!file_exists($file_path))
{
return false;
}
echo "step 02<br>";
$ = 0;
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
echo "step 0301<br>";
/* 测试文件 */
$test_file = $file_path . '/cf_test.txt';
/* 如果是目录 */
if (is_dir($file_path))
{
echo "step 0302<br>";
/* 检查目录是否可读 */
$dir = @opendir($file_path);
if ($dir === false)
{
echo "step 0303<br>";
return $; //如果目录打开失败,直接返回目录不可修改、不可写、不可读
}
if (@readdir($dir) !== false)
{
echo "step 0304<br>";
$ ^= 1; //目录可读 001,目录不可读 000
}
@closedir($dir);
/* 检查目录是否可写 */
$fp = @fopen($test_file, 'wb');
if ($fp === false)
{
echo "step 0305<br>";
return $; //如果目录中的文件创建失败,返回不可写。
}
if (@fwrite($fp, 'directory access testing.') !== false)
{
echo "step 0306<br>";
$ ^= 2; //目录可写可读011,目录可写不可读 010
}
@fclose($fp);
@unlink($test_file);
/* 检查目录是否可修改 */
$fp = @fopen($test_file, 'ab+');
if ($fp === false)
{
echo "step 0307<br>";
return $;
}
if (@fwrite($fp, "modify test.\r\n") !== false)
{
echo "step 0308<br>";
$ ^= 4;
}
@fclose($fp);
/* 检查目录下是否有执行rename()函数的权限 */
if (@rename($test_file, $test_file) !== false)
{
echo "step 0309<br>";
$ ^= 8;
}
@unlink($test_file);
}
/* 如果是文件 */
elseif (is_file($file_path))
{
echo "step 0310<br>";
/* 以读方式打开 */
$fp = @fopen($file_path, 'rb');
if ($fp)
{
echo "step 0311<br>";
$ ^= 1; //可读 001
}
@fclose($fp);
/* 试着修改文件 */
$fp = @fopen($file_path, 'ab+');
if ($fp && @fwrite($fp, '') !== false)
{
echo "step 0312<br>";
$ ^= 6; //可修改可写可读 111,不可修改可写可读011...
}
@fclose($fp);
/* 检查目录下是否有执行rename()函数的权限 */
if (@rename($test_file, $test_file) !== false)
{
echo "step 0313<br>";
$ ^= 8;
}
}
}
else
{
echo "step 0390<br>";
if (@is_readable($file_path))
{
echo "step 0391<br>";
$ ^= 1;
}
if (@is_writable($file_path))
{
echo "step 0392<br>";
$ ^= 14;
}
}
echo "step 04<br>";
return $;
}
?>我将4楼的程序添加几个标签,在成功的机器上运行的结果是:d:\inetpub\wwwroot
step 01
step 02
step 0301
step 0302
step 0304
step 0306
step 0308
step 0309
step 04
[15]
before exit