"No such file or directory" 在 PHP 中使用 scandir 打开文件时
"No such file or directory" when opening file with scandir in PHP
我想读取名为"json"的文件夹中文件名最长的文件。
这是我的 PHP:(内部文件 "open.php")
<?php
// Tell PHP that we're using UTF-8 strings until the end of the script
mb_internal_encoding("UTF-8");
// Tell PHP that we'll be outputting UTF-8 to the browser
mb_http_output("UTF-8");
$files = scandir( __DIR__ . '/json', SCANDIR_SORT_DESCENDING);
$newest_file = $files[0];
readfile($newest_file);
//$output = file_get_contents($newest_file);
//echo json_encode($output, JSON_HEX_TAG);
?>
"json" 文件夹与 "open.php" 在同一目录中。当我在我的服务器上 运行 时,我得到响应 false
(或 HTTP 500 错误)。
当我在 XAMPP 上 运行 时,我得到:Warning: readfile(thisone.json): failed to open stream: No such file or directory in C:\xampp\htdocs\test\open.php on line 15
。
我不认为这是权限问题,因为我使用的是 Win 7。我检查了文件夹和文件权限,所有用户都可以 "read".
问题:为什么PHP无法打开文件?它正确地找到了我想要的文件,但紧接着告诉我有 "no such file".
更新:
运行 以下代码:
// Tell PHP that we're using UTF-8 strings until the end of the script
mb_internal_encoding("UTF-8");
// Tell PHP that we'll be outputting UTF-8 to the browser
mb_http_output("UTF-8");
$files = scandir( __DIR__ . '\json', SCANDIR_SORT_DESCENDING);
print_r($files);
$newest_file = $files[0];
print_r($newest_file);
readfile('/json/'.$newest_file); // corrected this, as @Jeff pointed out
我得到输出:
Array ( [0] => thisone.json [1] => .. [2] => . ) thisone.json
Warning: readfile(/json/thisone.json): failed to open stream: No such file or directory in C:\xampp\htdocs\test\open.php on line 18
相关问题:
它与目录路径无关,因为在您的状态下,路径可能是正确的。这取决于您要阅读的文件。
因为您正在尝试读取 json
文件,您会收到此消息,但如果您放入任何其他文件,它将被读取。
所以你需要在阅读时解析 json
像这样
$path = 'json/';
$files = scandir($path);
foreach ($files as $newest_file) {
if ($newest_file === '.' or $newest_file === '..') continue;
$data = json_decode(readfile($path.'/'.$newest_file));
var_dump($data);
}
scandir returns 和包含文件名的数组 - 没有 文件夹名称。
但是这里 readfile($newest_file);
您没有包含子文件夹(在您编辑之前)
因此请在您的路径中包含所需的文件夹:
readfile('json\'.$newest_file);
我想读取名为"json"的文件夹中文件名最长的文件。
这是我的 PHP:(内部文件 "open.php")
<?php
// Tell PHP that we're using UTF-8 strings until the end of the script
mb_internal_encoding("UTF-8");
// Tell PHP that we'll be outputting UTF-8 to the browser
mb_http_output("UTF-8");
$files = scandir( __DIR__ . '/json', SCANDIR_SORT_DESCENDING);
$newest_file = $files[0];
readfile($newest_file);
//$output = file_get_contents($newest_file);
//echo json_encode($output, JSON_HEX_TAG);
?>
"json" 文件夹与 "open.php" 在同一目录中。当我在我的服务器上 运行 时,我得到响应 false
(或 HTTP 500 错误)。
当我在 XAMPP 上 运行 时,我得到:Warning: readfile(thisone.json): failed to open stream: No such file or directory in C:\xampp\htdocs\test\open.php on line 15
。
我不认为这是权限问题,因为我使用的是 Win 7。我检查了文件夹和文件权限,所有用户都可以 "read".
问题:为什么PHP无法打开文件?它正确地找到了我想要的文件,但紧接着告诉我有 "no such file".
更新:
运行 以下代码:
// Tell PHP that we're using UTF-8 strings until the end of the script
mb_internal_encoding("UTF-8");
// Tell PHP that we'll be outputting UTF-8 to the browser
mb_http_output("UTF-8");
$files = scandir( __DIR__ . '\json', SCANDIR_SORT_DESCENDING);
print_r($files);
$newest_file = $files[0];
print_r($newest_file);
readfile('/json/'.$newest_file); // corrected this, as @Jeff pointed out
我得到输出:
Array ( [0] => thisone.json [1] => .. [2] => . ) thisone.json
Warning: readfile(/json/thisone.json): failed to open stream: No such file or directory in C:\xampp\htdocs\test\open.php on line 18
相关问题:
它与目录路径无关,因为在您的状态下,路径可能是正确的。这取决于您要阅读的文件。
因为您正在尝试读取 json
文件,您会收到此消息,但如果您放入任何其他文件,它将被读取。
所以你需要在阅读时解析 json
像这样
$path = 'json/';
$files = scandir($path);
foreach ($files as $newest_file) {
if ($newest_file === '.' or $newest_file === '..') continue;
$data = json_decode(readfile($path.'/'.$newest_file));
var_dump($data);
}
scandir returns 和包含文件名的数组 - 没有 文件夹名称。
但是这里 readfile($newest_file);
您没有包含子文件夹(在您编辑之前)
因此请在您的路径中包含所需的文件夹:
readfile('json\'.$newest_file);