PHP:创建只读文件而不使用 chmod()

发布于 2024-11-08 13:04:08 字数 60 浏览 0 评论 0原文

我在服务器上禁用了 chmod(),但我仍然希望用户能够通过 PHP 创建只读文件,有没有办法做到这一点?

I have chmod() disabled on my server, but I still want users to be able to create read-only files via PHP, is there a way to do so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尘世孤行 2024-11-15 13:04:08

你不能,因为不可能将任何内容放入只读文件中...

编辑实际上,有一种方法:

<?php
  $u = umask(0377); // disables --wxrwxrwx permissions
  $f = fopen("test", "w");
  umask($u);
  fwrite($f, "this is a test\n");
  fclose($f);
?>

% php foo.php
% ls -l test
-r--------  1 xxx xxx  14 19 May 10:27 test
% cat test
this is a test

umask 操作允许您创建读/写文件描述符,即使底层目录条目是可读的 -仅有的。

You can't, since it's impossible to put anything in a read-only file...

EDIT actually, there is a way:

<?php
  $u = umask(0377); // disables --wxrwxrwx permissions
  $f = fopen("test", "w");
  umask($u);
  fwrite($f, "this is a test\n");
  fclose($f);
?>

% php foo.php
% ls -l test
-r--------  1 xxx xxx  14 19 May 10:27 test
% cat test
this is a test

The umask manipulation allows you to create a read/write file descriptor, even though the underlying directory entry is read-only.

深居我梦 2024-11-15 13:04:08

作为解决方法,您可以首先使用 file_put_contents() 存储文件,然后使用 < a href="http://php.net/ftp_chmod" rel="nofollow">ftp_chmod() 更改文件权限。

另一个选项是通过命令行,但如果禁用 chmod,则 exec 也不太可能起作用。如果您的托管服务商禁用了这两个功能,那么这可能是有原因的。 (如果只是为了减少支持成本。)

As workaround, you could first store the files using file_put_contents(), and then use ftp_chmod() to change the file permissions.

The other option would be via the commandline, but if chmod is disabled then exec is unlikely to work either. And if your hoster disabled both, then there likely is a reason for that. (If only it is to reduce support costs.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文