通过php创建新虚拟主机在权限被拒绝时失败
我有两个问题:通过php创建新虚拟主机在权限被拒绝时失败,php,apache,Php,Apache,我有两个问题: 当我跑步时: 文件内容(“/etc/apache2/sites enabled/www.mydomain.com.conf”,$vh) 我收到错误:无法打开流:权限被拒绝 如何从PHP安全地重新加载apache(添加域后)。 我认为$res=shell\u exec(“sudo服务apache2重新加载”)不起作用,我没有得到任何回报 您肯定不想像PHP那样做,但可以尝试以下方法:修改sudoers文件以授予apache执行单个命令的能力: root ALL=(ALL)NOPAS
文件内容(“/etc/apache2/sites enabled/www.mydomain.com.conf”,$vh)代码>
我收到错误:无法打开流:权限被拒绝
重新加载
apache(添加域后)。
我认为$res=shell\u exec(“sudo服务apache2重新加载”)
不起作用,我没有得到任何回报您肯定不想像PHP那样做,但可以尝试以下方法:修改sudoers文件以授予apache执行单个命令的能力: root ALL=(ALL)NOPASSWD:/usr/local/bin/php\u add\u vhost 然后创建一个可执行脚本(bash或php、python或其他任何脚本),从特定位置读取数据,将其放入/etc目录并执行“服务apache2重新加载”
这种方法有很多安全问题,但如果你问这个问题,你可能无论如何都可以去做。这是一种不好的做法,为什么不去创建一个默认的虚拟主机来回答任何域。
在应用程序级别,您可以对其进行一些保护。 这样,您可以将代码缩短到最小。
他是一个例子(不要照原样使用,需要测试):
服务器管理员webmaster@localhost
DocumentRoot/var/www/html
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
“权限被拒绝”我希望如此,给php写入该目录的权限将是一个坏主意。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/the_site>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>