【发布时间】:2015-05-12 22:55:37
【问题描述】:
当dio_open() 工作正常时,看到一些运行fopen() 的问题。这是我编写的一个测试脚本,用于检查问题,因为它出现在我正在尝试开始工作的新安装中。
<?php
echo "Current User: " . get_current_user() . "<br/>";
echo "UID: " . getmyuid() . "<br/>";
echo "GID: " . getmygid() . "<br/>";
echo "<br/>";
$foTest = fopen("test.txt","r");
echo fread($foTest,4);
$fd = dio_open('test.txt', O_RDONLY);
$read = dio_read($fd);
echo $read;
$file = dio_open('test.txt', O_WRONLY | O_CREAT);
?>
脚本输出以下内容:
当前用户:infinitywhack UID:1004 GID:1002
test 警告:dio_open(): 无法打开带有标志 0 的文件 test.txt 和 权限 0:没有这样的文件或目录 /var/www/infinity.whacknet.com/public_html/test.php 第 9 行
警告:dio_read() 期望参数 1 是资源,给定的布尔值 在 /var/www/infinity.whacknet.com/public_html/test.php 第 10 行
警告:dio_open(): 无法打开带有标志 65 和 权限 0:权限被拒绝 /var/www/infinity.whacknet.com/public_html/test.php 在第 12 行
这显示了正确的用户和组 (infinitywhack:www)。这里的“test”输出是 test.txt 文件的内容,也就是使用 fopen() 运行的代码。错误仅由 dio 函数给出。
以下是两个文件的权限:
[root@death public_html]# ls -la test.*
-r-xr-xr-x. 1 infinitywhack www 342 May 12 23:36 test.php
-rwxrwxrwx. 1 infinitywhack www 5 May 12 23:06 test.txt
我整晚都在摸索这个问题,关于我发现的任何 dio 的文档都很少。很少说这里需要什么。我唯一能想到的是 suExec,但没有使用任何指令会导致这种情况,尽管如果是这种情况,这些相同的指令对于 fopen 肯定也会失败?
这里的任何帮助将不胜感激!
【问题讨论】:
-
是否有可能 dio_open 不读取相对路径?如果您尝试使用完全限定的路径会发生什么?