使用php在/ etc中创建目录

时间:2016-06-07 00:41:32

标签: php linux nginx laravel-5 shell-exec

我想在/ etc / nginx / sites-enabled / php中创建一个文件,我已经尝试了很多次但是php不会让我觉得我已经修改了/ etc / sudoers并且我把它们设置为用户ALL :NOPASSWD:所有但仍然不行,有人可以告诉我原因吗?

$result= shell_exec('sudo -u root mkdir /etc/nginx/myfile');

我的文件/ etc / sudoers

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.  
#
Defaults        env_reset
Defaults        exempt_group=sudo
Defaults        mail_badpass
Defaults               secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification
# User alias specification

# Cmnd alias specification
Cmnd_Alias NGINXVHOST = /bin/ln, /bin/mkdir
# User privilege specification
# root  ALL=(ALL:ALL) ALL
root ALL= (ALL) NOPASSWD:ALL
# Members of the admin group may gain root privileges 
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL) NOPASSWD:ALL
vagrant ALL=(ALL) NOPASSWD:ALL
subdominio ALL=(ALL) NOPASSWD:ALL
# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

请帮助!!!

1 个答案:

答案 0 :(得分:1)

实现此目标的正确方法是让PHP页面在任务队列中创建一个条目。该条目只需包含虚拟主机的新域。然后你应该有另一个以root身份运行的进程,它可以检查主机名并根据需要创建nginx记录。

如果您目前没有使用任何任务队列,也可以通过简单的cron作业来实现。只需使用vhost名称在数据库中输入一个条目即可。然后让cron作业每分钟检查一次该表并制作nginx记录。