我的所有 .php 文件都出现 http 500 错误

我的所有 .php 文件都出现 http 500 错误

首先,抱歉我的英语不好!

您好,我正在独自学习 Web 开发,因此我实际上并不是了解所有知识。

我的问题是,在我使用已编辑的(我不认为这有错误)表单下载和编辑文件之后。之后,我的所有 .php 文件(在此之前运行良好)现在都出现 http 500 错误,我不知道问题出在哪里。

我没有.htaccess。

我知道我没有发送任何信息,但我不知道哪些信息与这个案例相关,哪些不相关,所以我希望大家能告诉我应该向你们发送哪些信息。

然后我会编辑这篇文章,并将其发送至评论中。

感谢大家的帮助!

编辑1:

我发现了一些 php 错误日志,但我不太理解:

我发现了一些非常奇怪的事情......

文件(/var/www/html/index.php)不在允许的路径内:(1)位于未知的第 0 行

它对我所有的 .php 文件都这么说,但我不知道为什么,因为我唯一做的事情就是使用我的表单输入来测试某些东西,然后就出现了这个错误......

编辑2:

在错误出现之前,我修改了两个 .php 文件。

这个:

<?php
    $levelID = $_POST["levelid"];
    $description = $_POST["description"];
    $levelCreator = $_POST["creator"];

    shuffle($array);

    $arrayLength = count($array) - 1;

    $folder_name = $levelID;
    $rand = 3;


    $directoryFile = "/var/www/html/ng/mm/levels/" . $folder_name . "/";
    $directoryCache = "/var/www/html/ng/mm/cache/";
    $file = $directoryCache . basename($_FILES["FileToUpload"]["name"]);

    $allowed =  array('image/jpeg','image/png' ,'image/gif', 'image/x-icon', 'image/bmp');

    $counter = 0;

    for($i = 0; $i <= sizeof($allowed) - 1; $i++){
        if($_FILES["FileToUpload"]["type"] == $allowed[$i]){
            if(move_uploaded_file($_FILES["FileToUpload"]["tmp_name"], $file)){
                if(!mkdir($directoryFile, 0700, true)){
                    echo "<h2>Das erstellen des Ordners schlug fehl!</h2>";
                }
                else{
                    echo "<h2>Level erfolgreich hochgeladen!</h2>";

                    $levelidfFile = fopen($directoryFile . "levelID.txt", "w");
                    fwrite($levelidfFile, $levelID);
                    fclose($levelidfFile);
                    $descriptionFile = fopen($directoryFile . "description.txt", "w");
                    fwrite($descriptionFile, $description);
                    fclose($descriptionFile);
                    $creatorFile = fopen($directoryFile . "creator.txt", "w");
                    fwrite($creatorFile, $levelCreator);
                    fclose($creatorFile);

                    rename($directoryCache . $_FILES["FileToUpload"]["name"], $directoryFile . "thumbnail.png");
                    echo "Level ID: " . $levelID . " Beschreibung " . $description . " DateiName: " . $_FILES["FileToUpload"]["name"];
                    break;
                }
            }
            else{
                echo "<h2>Du hast kein Level-Thumbnail hochgeladen!</h2>";
            }       
        }
        else{
            $counter++;
            if($counter == sizeof($allowed) - 1){
                echo "<h2>Lade ein Bild/GIF hoch, keine andere Dateien!";
            }
        }
    }
?>

我添加了此代码

$creatorFile = fopen($directoryFile . "creator.txt", "w");
                    fwrite($creatorFile, $levelCreator);
                    fclose($creatorFile);

和:

<body>
<form method="post" action="mm.php" enctype="multipart/form-data">
    <input type="file" name="FileToUpload"> <br>
    <input type="text" name="creator" placeholder="Level-Creator.."> **ADDED** <br>
    <input type="text" name="levelid" placeholder="Level-ID.."> <br>
    <input type="text" name="description" placeholder="Beschreibung.."> <br>
    <input type="submit" value="Verschicken">
</form>
</body>

此外,这里是包含我的 php 错误日志的 pastebin 链接:https://pastebin.com/f96LyNrZ

我非常感谢您的帮助!

编辑3:

我已经找到了如何使错误直接显示在我的网站上的方法,结果如下:

警告:未知:open_basedir 限制生效。文件 (/var/www/html/ng/mm/index.php) 不在允许的路径内:(1) 位于未知的第 0 行

警告:未知:无法打开流:第 0 行未知中不允许操作

致命错误:未知:无法打开所需的‘/var/www/html/ng/mm/index.php’(include_path=‘.:/usr/share/php’)在第 0 行的未知位置

在我的 php.ini 中 open_basedir 处于开启状态:

open_basedir = On

编辑4:

我在我的 Raspberry Pi B+ 上测试了我的脚本并且它运行良好,所以这个脚本不是导致我的整个 php 现在出现这个问题的原因。

所以我查看了我的 php.ini,然后我看到 open_basedir 应该被注释,但是我和真正的白痴不知道我应该重新启动 apache2,我的服务器将使用新的保存...

感谢所有帮助过我的人!

答案1

当网络服务器由于严重错误而无法处理文件时,它会给出 500 内部服务器错误。

根据服务器的配置方式,如果您有一个简单的拼写错误,它可能会抛出错误,以避免在屏幕上显示错误。在这种情况下,错误通常会记录在某处。

解释器也可能无法理解该文件。如果您使用文本编辑器打开文件并以不同的布局保存,例如 UTF-8 BOM 与纯文本、Unix 与 Windows 等,就会发生这种情况。

您将需要使用以下简单命令创建一个新的文本文件:

<?php
      echo 'Hello World';
?>

排除任何 php 配置错误并测试布局是否正确。如果可行,请将不再起作用的脚本复制到该文件并保存。如果不起作用,则说明脚本中存在拼写错误。您需要以某种方式启用错误以查看错误是什么。

编辑:您现在给出了错误,以前没有出现过。实际上是 apache(或任何正在运行的 Web 服务器)引发了 500 内部服务器错误。这可能是由于 php 的配置方式造成的,但也可能是因为 php 根本没有运行。

您需要验证您的安装和配置。Web 服务器是否真的在运行?它是否显示 html 文件?诸如此类。重新启动实际上也可以,您可能想尝试一下。

相关内容