【问题标题】:404 error on localhost本地主机上的 404 错误
【发布时间】:2015-09-24 00:02:45
【问题描述】:

我正在尝试使用一些 ajax 来发送一些电子邮件。我在使用冷聚变之前已经这样做了,没有问题。

我遇到的是 localhost 没有找到目录中明显存在的文件。实际上,该文件与 index.php 位于同一目录中,这没有问题。但是,它在我的 send.php 文件中给了我一个 404 错误文件未找到。我什至尝试通过地址栏直接进入该页面,但找不到该文件。 如果我输入文件路径,即 - file:///C://xampp/htdocs/3H-Web-Wlements/send.php,它将显示代码。

但是,当我上传到我的活动服务器时,它没有问题。

我在这里错过了什么?

这是日志中的错误: [2015 年 9 月 23 日星期三 19:33:34.295785] [:error] [pid 2552:tid 1752] [client ::1:63670] 找不到脚本'C:/xampp/htdocs/index.php'或无法统计,推荐人:http://localhost/3H-Web-Wlements/

我是否有配置错误甚至未配置的内容?
就像我说的。它适用于我的活动服务器,但仅在本地主机上失败。

我的 send.php 代码

<?php
/*
 **************************************
 *                                    *
 * Config here                        *
 *                                    *
 **************************************
 */

$to = 'xxx@gmail.com';
$subject = 'Message from website';
$siteName = "xxx";

/*
 *************************************************************
 *                                                           *
 *      Don't Change below code, if you don't know php.      *
 *                                                           *
 *************************************************************
 */

$name = $_POST['contactName'];
$mail = $_POST['contactEmail'];
$subject = $_POST['contactWebsite'];
$note = $_POST['contactMessage'];
$ipAdd = $_POST['contactIp'];

if (isset($name) && isset($mail) && isset($note)) {


    // $mailSub = '[Contact] [' . $siteName . '] '.$subject;

    $body = 'Sender Name: ' . $name . "\n\n";
    $body .= 'Sender IP: ' . $ipAdd . "\n\n";
    $body .= 'Sender Mail: ' . $mail . "\n\n";
    $body .= 'Website: ' . $subject . "\n\n";
    $body .= 'Message: ' . $note;

    $message = $body;

    $header = 'From: ' . $mail . "\r\n";
    $header .= 'Reply-To:  ' . $mail . "\r\n";
    $header .= 'X-Mailer: PHP/' . phpversion();

    // mail($to, $mailSub, $body, $header);
    mail($to, $subject, $message, $headers);
}else{
    echo '0';
}
?>

【问题讨论】:

  • 当您访问 file:/// 时,您将像在浏览器的文件查看器上打开文件一样打开文件,而不是通过 http:// 在 HTTP Web 服务器上运行它
  • 收到 404 错误后,请检查您的 Apache(或其他网络服务器...)错误日志 - 它会告诉您 Apache 尝试 服务的文件。这应该会给您一些提示 - 如果您仍然无法从那里弄清楚,请使用该文件更新我们。在 Ubuntu Linux 上,我在 /var/log/apache2/error.log 找到了我的错误日志。
  • 哎呀。我似乎没有重定向 - 我希望成功调用时出现空白白屏(或失败时为 0)。最后一个问题:在活动服务器上,url 是example.com/send.php 还是example.com/3H-Web-Wlements/send.php
  • example.com。 3h-web-wlements 只是 htdocs 中的一个文件夹。我以这种方式构建只是为了保持示例的清洁。我将文件内容上传到域的根目录。

标签: php localhost


【解决方案1】:

根据您提供的错误消息以及您在 localhost 上导航到的 URL 的模糊性,我怀疑您的问题的根本原因是在您的开发服务器和生产服务器上设置了两个不同的文档根目录。

如果我是对的,可以通过将开发服务器的文档根目录从 C://xampp/htdocs/ 更改为 C://xampp/htdocs/3H-Web-Wlements/ 来解决此问题。使用此设置,服务器将尝试从3H-Web-Wlements/ 而非htdocs/ 提供index.php

可以在 Apache 的配置文件中设置文档根设置,该文件通常称为 httpd.conf。如果您使用的是 XAMPP 或 MAMP 等开发设置,您可能在控制面板中有一个按钮可以访问 httpd.conf。

更改后的设置应如下所示:

DocumentRoot C://xampp/htdocs/3H-Web-Wlements/

进行更改后,您需要重新启动网络服务器才能使更改生效。

【讨论】:

    【解决方案2】:

    在 php 上发送电子邮件功能比在活动服务器上测试要好得多,因为 localhost 需要配置以支持电子邮件功能,而活动服务器已经为此设置了。我也经历过。

    【讨论】:

    • 我明白你的意思,我试图避免为此现场进行所有测试和开发。我想做的是在活动之前进行测试。我真的不想写额外的代码,这样我就可以在上线之前进行测试。
    • @MarkHart 如果您确认您的代码在活动服务器上运行,您可以保留它并继续在本地主机上运行的其他功能上进行编码。在我的例子中,我创建、分析、研究代码的正确语法,然后在活动服务器上进行测试,以减少对活动服务器的反复试验
    猜你喜欢
    • 2013-08-14
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多