apache 访问公共目录外的文件时出现404错误

6rqinv9w  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(233)

我对php相当陌生,我正在尝试构建一个to-do应用程序。
我在一个名为public的文件夹中有一个基本的html表单,如下所示:

<form method="POST" action="src/create.php">
            <label>Task:</label>
            <input name="title" type="text"  placeholder="Name your task..." required>
            <br>
            <label>Task description: </label>
            <input name="description" type="text" placeholder="Description" required>
            <br><br>
            <input type="submit" name="submit" value="Create a task">
        </form>

..就像这个动作所暗示的那样,我有一个文件夹src,我试图在其中将数据插入到数据库中,如下所示:

<?php
    include_once __DIR__ . '/../database/conn_db.php';

    if (isset($_POST["submit"])){
        
        $taskTitle = mysqli_real_escape_string($conn, $_REQUEST["title"]);
        $taskDescription = mysqli_real_escape_string($conn, $_REQUEST["description"]);

        if(empty($_POST["title"])) {
            header("Location: ../public/index.php?create=error".urlencode("Invalid title"));
            exit();
        }
        if(empty($_POST["description"])) {
            header("Location: ../public/index.php?create=error".urlencode("Invalid description"));
            exit();
        }

        $sql = "INSERT INTO todolist.tasks (title, description) VALUES ('$taskTitle', '$taskDescription')";
        mysqli_query($conn, $sql);
        header("Location: ../public/index.php?create=success");
    }

当我提交数据到create.php我撞到一个 *404请求的URL并没有在此服务器上找到 * error
我已经尝试了action="../src/create.php等,但由于某种原因,我就是不能访问src文件夹或其中的文件。
我的文件夹结构如下:
公开的
--index.php
源代码
--create.php
资料库
--conn_db.php
任何帮助都是感激不尽的,谢谢!
P.S.当我使用Xdebug的live服务器时,一切都运行良好,但当我使用Apache 2.4(WIN)时,就会发生这个错误。

gwbalxhn

gwbalxhn1#

它看起来像你正在你的开发pc上尝试。在这种情况下,你需要使用这样的东西
action="localhost/src/create.php"
否则,浏览器不知道您正在查看的是哪个域。当然,对于部署,您必须更改路径。
以下是实现此目的的一些方法
1.我有一个名为make_link的函数,它使用Debug标志为路径返回一个不同的前缀。
1.在common.php中设置一个前缀,根据您是在调试还是在生产服务器上运行而定。将此前缀包含在所有页面中,并为所有公共路径添加前缀(不包括路径)。
1.在php.ini中具有前缀变量
1.更安全的方法是在**.htaccess**文件中包含环境变量

相关问题