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 directory
和 Permission denied
错误来自 OS,而不是 dio 库。因此,您的服务器似乎在错误的位置寻找 test.txt
。
看到一些问题 运行 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 directory
和 Permission denied
错误来自 OS,而不是 dio 库。因此,您的服务器似乎在错误的位置寻找 test.txt
。