我有两个问题:
我跑的时候:
file_put_contents("/etc/apache2/sites-enabled/www.mydomain.com.conf",$vh);
我收到错误:failed to open stream: Permission denied
如何从PHP安全地reload
apache(在添加域之后)。
我不认为$res = shell_exec("sudo service apache2 reload")
正在发挥作用,我得不到任何回报。
答案 0 :(得分:1)
这是一个不好的做法,为什么不去创建一个可以回答任何域的默认虚拟主机 在应用程序级别,您可以对其进行一些保护。 这样您就可以将代码缩短到最小 他就是一个例子(不要使用它,需要进行测试):
<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>
答案 1 :(得分:0)
您绝对不希望以PHP身份执行,但您可以尝试以下方法:修改sudoers文件以授予您的apache sudo单个命令的能力:
root ALL =(ALL)NOPASSWD:/ usr / local / bin / php_add_vhost
然后创建一个可执行脚本(bash或php,python或其他),它从特定位置读取数据,将其放在/ etc目录中并执行&#34; service apache2 reload&#34;。 / p>
这种方法存在许多安全问题,但如果你问这个问题,你可能还是不错的。