Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php创建新虚拟主机在权限被拒绝时失败_Php_Apache - Fatal编程技术网

通过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)

    我收到错误:
    无法打开流:权限被拒绝

  • 如何从PHP安全地
    重新加载
    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>