我尝试使用put
创建文件,并为文件提供权限777
。
如果我像这样创建文件:
use File;
...
$content = "<?php echo 'test'; ?>";
$file = app_path() . '/Http/Controllers/test.php';
File::put($file, $content);
但是,该文件是使用以下权限创建的:
-rw-r--r-- 1 daemon daemon 2,2K Mär 14 08:08 test.php
用户和群组也是daemon
而不是root
。
如何创建包含用户和群组root
且权限为rwxrwxrwx
的文件?
e.g。
-rwxrwxrwx 1 root root 2,2K Mär 14 08:08 test.php
我还将这些行添加到/etc/sudoers
www-data ALL=(ALL) NOPASSWD: /bin/chmod
www-data ALL=(ALL) NOPASSWD: /bin/chown
www-data ALL=(ALL) NOPASSWD: /bin/chgrp
但我仍然使用以下代码获取chmod(): no permission
:
File::chmod($unitPath, 0777);
chown($unitPath,"root");
chgrp($unitPath,"root");
答案 0 :(得分:3)
Laravel内置支持更改mod
例如:
File::chmod($file,0755); //the leading zero is a must
不幸的是它没有在其Filesystem模块中显示,但你可以调用php一个
chown($file,"root");
更改群组
chgrp($file,"group");
请注意:如果您不是超级用户,即使您可以sudo,更改群组和所有者也会失败。
答案 1 :(得分:1)
我使用shell_exec()
shell_exec('sudo chmod 0777 '. $unitPath);
shell_exec('sudo chown root:root '. $unitPath);
通过在文件www-data
中输入这些行,确保允许/etc/sudoers
执行命令。
www-data ALL=(ALL) NOPASSWD: /bin/chmod
www-data ALL=(ALL) NOPASSWD: /bin/chown
重要提示!始终使用visudo
来编辑/etc/sudoers
,否则您可以轻松地制作语法错误并破坏文件并放弃使用sudo
的可能性,并且您需要通过从live cd启动来修复系统