在我的php应用程序中,我想以文本格式创建错误日志,所以尝试这样在我的本地机器上工作正常
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
$stringData = "Error Info: ".$mail->ErrorInfo."\t\t";
$stringData .= "Email to reciepient \t Regnumber: ".$RegNo." \t Apllicant Name: ".$ApplicantName." Failed --- end ----";
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/lib/email_errorlog.txt","wb");
fwrite($fp,$stringData);
fclose($fp);
exit;
}
我已经在PHP Create and Save a txt file to root directory中看过讨论,但它不适用于我。问题是,没有显示错误但文本文件没有创建。需要在服务器上设置任何权限?
答案 0 :(得分:2)
你必须确保:
webserver process
有权写入该文件夹。如果使用 ftp帐户创建文件夹,则网络服务器进程将具有无访问权限。您可以将权限设置为777,但随后每个人都可以访问。最好将权限设置为770,并使该文件夹的组成为webserver组ID。
答案 1 :(得分:0)
在尝试创建文件之前,您可以检查文件(或者更确切地说是父目录)is writeable。
根据php manual fopen()
:
成功时返回文件指针资源,错误时返回FALSE。
因此,您可以使用此$php_errormsg
或get_last_error()
来构建正确的文件编写代码:
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/lib/email_errorlog.txt","wb");
if( $fp === false){
// Notification about failed opening
echo "Cannot open file: " + $php_errormsg; // Not that wise in production
exit();
}
fwrite($fp,$stringData);
fclose($fp);
exit();
但是如果配置正确,所有错误都应该在错误日志中。