PHP-引用并附加到单独目录中的txt日志文件

时间:2013-05-15 21:35:34

标签: php append server-side fopen

正如我们所做的那样,我正在冒险进入另一个编程企业。我正在使用xhtml标准1.0,CSS,Javascript和PHP构建一个网站。这里没什么特别的,但我在PHP开发过程中遇到了一个非常有趣的问题。

我编写了工作代码,通过电子邮件发送电子邮件到网站联系电子邮件,并通过表单发送给发件人。我还想在服务器内部记录这些事务。从我研究的内容来看应该很容易。这就是我所拥有的。

    $fileVar = fopen("../data/feedback.txt", "a")
    or die("Error: Could not open the log file.");
    fwrite($fileVar, "\n-------------------------------------------------------\n")
    or die("Error: Could not write to the log file.");
    fwrite($fileVar, "Date received: ".date("jS \of F, Y \a\\t H:i:s\n"))
    or die("Error: Could not write to the log file.");
    fwrite($fileVar, $messageToBusiness)
    or die("Error: Could not write to the log file.");

我正在存储反馈文本的目录将是我的public_html(主目录,然后很简单... data / feedback.txt。

我正在使用标准权限...字面上没有什么特别的755用于目录,644用于文件。但是,每次执行我都会收到第一个错误。

(“错误:无法打开日志文件。”)

我需要帮助,更重要的是,如果您知道原因,可以给我一个简短的解释,或者如果您没有时间,您可以在以后提供资源链接吗?我似乎无法绕过这个。

感谢阅读,如果我先找到答案,我会发布。

编辑:我决定将整个代码包含在内,希望错误来自上面。我将感谢任何信息和建设性的反馈。我不是那里唯一的人,所以我的问题也集中在为他人提供资源。

<?php
//SendEmail.php

$messageToBusiness = 
    "From: ".$_POST['firstname']." "
            .$_POST['lastname']."\r\n" .
    "E-mail address: ".$_POST['email']."\r\n".
    "Phone number: ".$_POST['phone']."\r\n".
    "Subject: ".$_POST['Please_Choose']."\r\n".
    "Message Text: \r\n".$_POST['Message']."\r\n";

$headerToBusiness = "From: $_POST[email]\r\n";
mail("emailreplacement@gmail.com", $_POST['subject'], $messageToBusiness, $headerToBusiness);

$messageToClient =
    "Dear " .$_POST['lastname'].":\r\n".
    "The following message was received from you by website:\r\n\r\n".
    $messageToBusiness.
    "------------------------\r\nThank you for the taking the time to contact us, our representatives will respond as soon as we have the appropriate information for you. 
    Thank you for your patronage.\r\n" .

    "Business Rep \r\n------------------------\r\n";
if ($_POST['reply'])
    $messageToClient .= "Please feel free to contact us with any more concerns you may have!";

$headerToClient = "From: fakeemail@fake.com\r\n";
mail($_POST['email'], "Re: ".$_POST['subject'], $messageToClient, $headerToClient);

$display = str_replace("\r\n", "<br />\r\n", $messageToClient);
$display =
    "<html><head><title>Your Message</title></head><body><tt>".
    $display.
    "</tt></body></html>";
echo $display;

$fileVar =fopen("../data/feedback.txt", "a")
    or die("Error: Could not open the log file.");
fwrite($fileVar, "\n-------------------------------------------------------\n")
    or die("Error: Could not write to the log file.");
fwrite($fileVar, "Date received: ".date("jS \of F, Y \a\\t H:i:s\n"))
    or die("Error: Could not write to the log file.");
fwrite($fileVar, $messageToBusiness)
    or die("Error: Could not write to the log file.");
?>

1 个答案:

答案 0 :(得分:4)

错过了/

$fileVar = fopen("..data/feedback.txt", "a")
                    ^--- here

应为../data/feedback.txt。如果没有这些额外的斜杠,您将尝试在CURRENT目录中使用名为..data的目录。由于该子目录与您存在的子目录不同,因此无法在其中打开文件,因此您的“无法打开文件”错误。