2012-06-08 88 views
2

我有一个PHP脚本,其中包含一些文本文件的写作操作。现在,如果我从浏览器执行脚本,通过使用它的URL访问它,它工作正常,并且文件完美地写入。但是,当我从终端运行相同的脚本时,使用命令,脚本运行但不执行文件操作。我不确定,为什么会发生这种情况。我知道这可能是一件愚蠢的事情,或者我错过了一些关键或任何东西,但是现在还不能弄清楚。文件写不工作从终端,但从浏览器作品

这里是我使用

/path/to/php -f /path/to/file 

命令这是写入文本文件的代码:

$myFile = "filename.txt"; 
$fh = fopen($myFile, 'a+') or die("can't open file"); 
$str = "file content here"; 
fwrite($fh, $str); 
fclose($fh); 

感谢您的帮助。

+2

我希望看到您的文件的代码。 没有看到它,很难猜测。 – deb0rian

+0

ok ..用文件编写代码修改了问题。这非常简单。 –

回答

3

此的路径。例如,从终端运行时,它将在您运行命令时所在的目录中查找“filename.txt”,而从浏览器运行时,它将查找与PHP文件相同的目录。

要解决此问题,请使用完整路径,而不是仅访问您正在访问的文件的文件名。

+0

是的。那是问题所在。尽管@vinay首先指出我在那里,但我不在乎你的答案,因为这很容易理解。 –

1

这可能是一个权限问题。当您从浏览器运行脚本时,脚本将使用Web服务器的凭据执行。

将正确的权限设置为文件/目录或运行该脚本作为Web服务器的用户。

+0

文件的许可是0777.所以我不认为许可可能是问题。 –

0

ilanco是对的,这可能来自许可问题。在Unix上,解决这个问题的方法之一是:

1。首先,将该文件的所有权交给命令行用户,并将该组设置为Web服务器。例如,如果该服务器是Apache的,执行以下命令:

chown your_username:www-data filename 

www-data为Apache Web服务器的默认组。这个命令应该以root身份运行。

2。然后,给组写权限:

chmod g+w filename 
相关问题