我尝试使用此PHP代码从主目录及其所有子目录中获取所有文件:
function allFiles($dir) {
$files = [];
foreach(glob($dir.'*') as $fileOrDir) {
if(is_dir($fileOrDir)) {
$files = array_merge($files, allFiles($fileOrDir));
} else {
$files[] = $fileOrDir;
}
}
return $files;
}
$allFiles = allFiles($_SERVER['DOCUMENT_ROOT'].'/contents/');
foreach($allFiles as $file) {
echo $file.'<br>';
}
但我收到错误 500内部服务器错误。
我发现问题在于
$files = array_merge($files, allFiles($fileOrDir));
因为没有此行的代码可以正常运行
但问题是什么?
答案 0 :(得分:-1)
500 Internal Server Error
是一个通用异常,当发生未捕获的异常时由PHP返回到Web浏览器。为了调试问题,您需要获取有关抛出的更具体异常的信息。您当前使用的配置在生产方案中很常见,其中内部异常消息的详细信息不应向公众公开,但它可以使调试更加困难。
以下是您可以尝试获取真实异常消息的一些内容:
/var/log/apache2
/var/log/httpd
/usr/local/apache/logs/error_log
/var/log/messages
phpinfo()
的输出和error_log
的grep。ls /var/log
的内容,看看那里是否有另一个明显的位置。