我想用PHP创建这里的文件是我的代码:

$file_to_send = 'ftp_test_from_created_file.txt';
chmod($file_to_send, 0777);
$fh = fopen($file_to_send,'w');
$tsv_line = 'Hey\tThese\tAre\tTab\tSeperated\tValues';
fwrite($fh, $tsv_line);
fwrite($fh, '\n');
$tsv_line = 'Hey\tThese\tAre\tToo';
fwrite($fh, $tsv_line);
fclose($fh);

这显然给了我一个错误,因为我想在一个尚不存在的文件设置权限。虽然如果我跳过搭配chmod调用我得到另一个错误告诉我,我没有设置权限。因此,无论我在生病的鸡肉鸡蛋VS周期或者我需要设置包含目录的权限...但如何?它尝试了所有的folling的:

chmod('../containingfolder/', 0777);
chmod('../', 0777);
chmod('', 0777);

这工作没有...什么,应该怎么办?哦,通过一次我做的方式,我需要更改权限回来?

谢谢!

<强>更新我尝试的 CHMOD(,0777 '')并,这是我得到的错误:

Warning: chmod(): Operation not permitted

我试图使这个文件的唯一原因是,所以我可以通过FTP别的地方,然后我打算取消链接()它。所以,如果有更好的办法?也许就像文件存储在内存中发送(不知道如果多数民众赞成可能的话)?另外我使用PHP4。谢谢!

有帮助吗?

解决方案

您的文档根目录,我们将称之为$tmpFolder请确保网络服务器正在运行,并且用户具有读/写权限,它之外创建一个目录。然后执行下列操作:

$file_to_send = $tmpFolder . '/ftp_test_from_created_file.txt';
chmod($file_to_send, 0777);
$fh = fopen($file_to_send,'w');
$tsv_line = 'Hey\tThese\tAre\tTab\tSeperated\tValues';
fwrite($fh, $tsv_line);
fwrite($fh, '\n');
$tsv_line = 'Hey\tThese\tAre\tToo';
fwrite($fh, $tsv_line);
fclose($fh);

其他提示

这也可能是因为Apache服务器运行(如果是阿帕奇)没有权限更改对目录的权限。它可以具有根/根作为用户/组和Apache在Apache基或wwwuser或别的东西运行。

请在父目录ls -l,看看用户和组访问此文件夹。

要改变当前目录的许可,使用

chmod('.', PERMISSION);

你真的需要0777,即世界只读和可写的?似乎很松懈给我!

修改:你的建议CHMOD( '../ containingfolder /',0777);应该也有工作。你可以更详细的关于你的错误?

您不能设置一个条目的权限,如果用户运行PHP不能对其进行修改。看看Apache的配置,进行搜索与运行的用户(默认情况下它是www数据)。为了避免这些在未来,自己设置为相同的基团作为默认组,并给予文档根搭配chmod -R克+一

如果当前用户可写的目录,你应该能够简化所有的与file_put_contents()

<?php
$file = 'file_to_write.txt';
$data = "Tab\tseparated\tvalues\nMore\tseparated\tvalues";
file_put_contents($file);

如果您没有权限写入到当前目录(或任何目录),你将无法创建文件,更不用说chmod它。

如果你可以发布您从chmod()命令得到了错误,这将有助于。

chmod('.',0777);

应该工作。

如果你想保持在chroot监狱,但仍需要权限和chmod当前目录下,你将不得不弄清楚如何使用sudo与-S选项和管道root密码STDIN为了获得权限的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top