fopen() 有效, dio_open() 无效?

fopen() works, dio_open() doesn't?

看到一些问题 运行 fopen() when dio_open() 工作正常。这是我编写的测试脚本,用于检查出现在我尝试开始工作的新安装中的问题。

<?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);
?>

脚本输出如下:

Current User: infinitywhack UID: 1004 GID: 1002

test Warning: dio_open(): cannot open file test.txt with flags 0 and permissions 0: No such file or directory in /var/www/infinity.whacknet.com/public_html/test.php on line 9

Warning: dio_read() expects parameter 1 to be resource, boolean given in /var/www/infinity.whacknet.com/public_html/test.php on line 10

Warning: dio_open(): cannot open file test.txt with flags 65 and permissions 0: Permission denied in /var/www/infinity.whacknet.com/public_html/test.php on line 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 肯定也会失败?

如有任何帮助,我们将不胜感激!

首先确保您的文件存在。 此外,您的 php 文件权限应为 0777 才能创建文件 您可以通过此命令自动添加一个文件夹以设置权限“777”

$folder=mkdir( "yourdirname", 0777);

然后你应该尝试理解问题

 $file="test.txt";
    //maybe your server cannot find the root
    // if it does not solve the problem write root file command
// $file=dirname(__FILE__).DIRECTORY_SEPARATOR."test.txt";
    if (file_exists($file)) {
       //its ok try to continue
    } else {
        echo "the text file is not exits !";
    }

我认为 STLMikey 和 Ahmet 在正确的轨道上。

尝试dio_open(__DIR__ . DIRECTORY_SEPARATOR . 'test.txt', ...)

至少在这个source code中,dio_open没有尝试构建绝对路径。 filename 参数原样传递给操作系统。

No such file or directoryPermission denied 错误来自 OS,而不是 dio 库。因此,您的服务器似乎在错误的位置寻找 test.txt