在权限被拒绝的情况下,通过php创建新的虚拟主机失败

时间:2016-11-03 20:57:07

标签: php apache

我有两个问题:

  1. 我跑的时候:

    file_put_contents("/etc/apache2/sites-enabled/www.mydomain.com.conf",$vh);

    我收到错误:failed to open stream: Permission denied

  2. 如何从PHP安全地reload apache(在添加域之后)。 我不认为$res = shell_exec("sudo service apache2 reload")正在发挥作用,我得不到任何回报。

2 个答案:

答案 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>

这种方法存在许多安全问题,但如果你问这个问题,你可能还是不错的。