2012-07-04 121 views
0

我想创建一个文件,并写在一个文件夹,名为调试消息:创建一个txt文件失败,PHP

function debug($report){ 
    $file="/debug/debug.txt"; 
    file_put_contents($file,$report,FILE_APPEND | LOCK_EX); 
} 

调试文件夹在我的根目录。但文件无法创建..为什么?

+3

您是否为该'debug'文件夹设置了正确的权限? – Lix

+0

检查权限? – xdazz

+0

检查权限?并在这里发布你的错误 – nXqd

回答

2

此代码将打开全部该文件夹的权限。

chmod('PATH_TO_FOLDER',0777); 

根据您想要使用该文件夹到底该怎么做,你可能会考虑给它稍微有限的权限,只允许特定的用户读/写它。

下面是PHP手册采取了一些其他的例子 - http://php.net/manual/en/function.chmod.php

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 

// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 

// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 

// Everything for owner, read and execute for owner's group 
chmod("/somedir/somefile", 0750); 
?> 
+0

是这样写的:chmod(' /调试”,0777); –

+0

我很确定你必须通过绝对路径。尝试'chmod($ _ SERVER ['DOCUMENT_ROOT']。'/ debug',0777)' – Lix

-1

没有错代码,如果未显示错误,也许是造成PHP配置。 请参阅错误报告Error Report

一般来说,可以通过权限引起的(见debug文件夹的权限)

+0

这两个[错误报告](http://stackoverflow.com/questions/11325751/creating-a-txt-file-fails-with -php#comment14909483_11325751)**和** [权限](http://stackoverflow.com/questions/11325751/creating-a-txt-file-fails-with-php#comment14909342_11325751)已被建议。在尝试回答之前请阅读帖子。 – Lix

1

这是一个真正的遗嘱,以Lix的答案。

最常见的原因是当你在Apache下使用mpd_php5运行你的脚本时,因为你的php进程将作为apache UID(www-data或其他)运行。但是,默认情况下,您的调试目录将由您的帐户拥有755个权限。

我建议,这是不好的做法,权限设置为777,因为这将允许任何人在你的目录下创建文件,而是暂时权限设置为777,然后使用问答& d脚本来创建一个debug/logs并将其权限设置为755,然后将调试目录返回到755.

您会发现debug/logs目录现在由Apache UID拥有,并且可以由任何Apache进程写入。

这里的一个问题是,您将需要使用脚本来删除旧的调试文件,因为您自己的帐户无权执行此操作。