PHP在服务器上创建文本文件

时间:2012-10-02 08:12:14

标签: php mysql

在我的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中看过讨论,但它不适用于我。问题是,没有显示错误但文本文件没有创建。需要在服务器上设置任何权限?

2 个答案:

答案 0 :(得分:2)

你必须确保:

  • 文件夹根目录
  • 中存在文件夹/ lib
  • webserver process有权写入该文件夹。

如果使用 ftp帐户创建文件夹,则网络服务器进程将具有访问权限。您可以将权限设置为777,但随后每个人都可以访问。最好将权限设置为770,并使该文件夹的组成为webserver组ID。

答案 1 :(得分:0)

在尝试创建文件之前,您可以检查文件(或者更确切地说是父目录)is writeable

根据php manual fopen()

  

成功时返回文件指针资源,错误时返回FALSE。

因此,您可以使用此$php_errormsgget_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();

但是如果配置正确,所有错误都应该在错误日志中。