我遇到了显示给定目录的所有文件和子目录文件的函数问题。它在本地工作,但是当我上传它时,页面只会出现500错误。
我已经尝试过chmod到777,甚至是它搜索的整个目录,但似乎没有任何效果。任何帮助表示赞赏!
<?php
$directory = '../..';
$files = listFiles($directory, 'start.js');
echo json_encode($files);
function listFiles($dir, $origin) {
$directory = scandir($dir);
$files = [];
foreach($directory as $file){
if($file != '.' && $file != '..') {
$thisFile = $dir . '/' . $file;
if(is_dir($thisFile)) {
$files = array_merge($files, listFiles($thisFile, $origin));
}else{
$tempDir = str_replace('../..', '/game', $thisFile);
$extension = substr(strrchr($thisFile, '.'), 1);
if($extension == 'js' && strpos($thisFile, $origin) === false) $files[] = $tempDir;
}
}
}
return $files;
}
答案 0 :(得分:3)
语法:
$files = [];
只能从某个PHP版本(我认为5.4)中获得。检查服务器是否与开发环境版本相同。
答案 1 :(得分:2)
首先使用以下PHP代码启用错误报告:
ini_set('display_errors','On');
error_reporting(E_ALL);
其次,检查语法错误或其他内容。 像以前的评论者说的语法..
$files = [];
..仅适用于某个PHP版本(我认为5.4)。检查服务器是否与开发环境版本相同。
答案 2 :(得分:0)
在我的localhost上测试:
<?php
$directory = '../..';
$files = listFiles($directory, 'start.js');
echo json_encode($files);
function listFiles($dir, $origin) {
$directory = scandir($dir);
$files = array();
foreach($directory as $file){
if($file != '.' && $file != '..') {
$thisFile = $dir . '/' . $file;
if(is_dir($thisFile)) {
$files = array_merge($files, listFiles($thisFile, $origin));
}else{
$tempDir = str_replace('../..', '/game', $thisFile);
$extension = substr(strrchr($thisFile, '.'), 1);
if($extension == 'js' && strpos($thisFile, $origin) === false) $files[] = $tempDir;
}
}
}
return $files;
}
PS:首先,代码在$ files上给我一个错误...我改变它并且它有效。