Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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_Mapping_Dns - Fatal编程技术网

PHP域映射脚本

PHP域映射脚本,php,mapping,dns,Php,Mapping,Dns,我不知道这个词的确切含义,所以我的标题可能不正确 基本上,我要做的是编写一个包含输入字段的PHP脚本: Domain Name: <input type='text' name='dname' id='dname' value='http://example.com' /> <input type='submit' name='addname' value='Add A Domain' /> 域名: 当用户在文本字段中键入自己的域并按submit时,脚本将自动创建一个

我不知道这个词的确切含义,所以我的标题可能不正确

基本上,我要做的是编写一个包含输入字段的PHP脚本:

Domain Name: <input type='text' name='dname' id='dname' value='http://example.com' />
<input type='submit' name='addname' value='Add A Domain' />
域名:
当用户在文本字段中键入自己的域并按submit时,脚本将自动创建一个目录,在那里复制一些PHP脚本并将域名映射到那里。(当然,域名指向我们的服务器。)


我已经了解了mkdir()和copy()部分,但无法了解映射部分。如何使用PHP自动添加映射到/home/user/public\u html/copy1/的条目?

虽然您可以直接从PHP页面进行映射,但我建议不要这样做,原因有很多,从高故障风险(例如,页面执行突然中断)到安全风险(您的httpd用户将拥有对其自身配置的写访问权,以及文件系统中不应该具有的某些内容)

几天前,我编写了一个类似的控件“网站创建控制面板”,其工作方式大致如下:

  • php脚本接收网站创建请求并将其存储在某个位置(例如数据库中).dot
  • 另一个脚本,以root身份通过cron运行,比方说,五分钟检查网站创建请求队列。如果有:
    • 将站点创建任务标记为“已锁定”
    • 在适当的位置创建目录,用脚本等填充
    • 根据需要更改所有权限
    • 创建新的virtualhost配置并启用它
    • 使Web服务器重新加载其自己的配置
    • 将站点创建任务标记为“完成”
第二个脚本可以用您喜欢的任何语言编写,PHP、Python、Bash等等

关于apache配置 要创建“映射”到域的目录,您可以使用以下方法:

首先,“slugify”你的域名。我通常使用(净化的!)域名,并用双破折号转换所有点(这不是有效的域名部分)。我不喜欢文件/目录名中的点作为文件扩展名分隔的一部分

然后,您可以创建如下内容(假设域是
www.example.com
):


当然,还要向将用于运行脚本的用户授予对网站基本目录的写入权限。

我认为您需要将虚拟主机添加到apache配置中(例如httpd.conf) 像这样:

ServerName example.com

DocumentRoot/home/user/public\u html/copy1/

虚拟主机配置的Apache文档:


现在已经超过10个月了,所以我只建议一下我的发现

虽然直接写入httpd.conf似乎是唯一的方法,但最近我们的网站更改了服务器。这给我们的文件/文件夹权限带来了很多麻烦,托管公司出于安全考虑拒绝帮助我们

所以我再看一眼,发现我正在使用CPanel来托管,我当然可以使用Addon域特性来创建和添加新的域

但它也有它的局限性。因为它是一个附加域,我们不能再限制每个域的带宽和磁盘使用率。所有东西都是共享的。但这对我们来说并不重要

到目前为止,它是有效的。您可以使用CPanel官方网站上提供的CPanel API库,也可以使用直接URL请求方式来创建域。因为我们正在进行新的wordpress安装,所以我们也创建了一个新的数据库

http://{username}:{password}@{mysite.com}:2082/frontend/x3/sql/addb.html?db={dbname}
http://{username}:{password}@{mysite.com}:2082/frontend/x3/sql/adduser.html?user={dbuser}&pass={dbpass}
http://{username}:{password}@{mysite.com}:2082/frontend/x3/sql/addusertodb.html?db={dbname}&user={dbuser}&ALL=ALL
http://{username}:{password}@{mysite.com}:2082/frontend/x3/addon/doadddomain.html?domain={newsite.com}&user={ftp_user}&dir={ftp_dir}&pass={ftp_pass}&pass2={ftp_pass}
你可以用它来安装joomla、drupal、phpbb甚至你的自定义脚本


希望它能帮助阅读本文的任何人。谢谢。

我很确定您需要Apache VirtualHosts…您是否具有根级别的服务器访问权限?(注意:假设此处使用Apache,但这适用于所有类型的服务器)如果您未在此处使用任何url编码或任何框架…则可以解析url..就像“”是值表单输入字段,然后您可以将其设置为/home/user/public_html/new/rajat…您需要做的只是将.com之后的部分附加到..../public_html/@rajat nope。目录名无论如何都不重要。映射后,用户不会看到/home/user/public_html/copy1/当使用FTP时,他们只会看到该目录上的文件只允许使用ectory。正如redShadow所说,我们可以将域名替换为slugify,然后使用它。如果我保护脚本,只允许少数选定的人访问表单,会怎么样?这样更好吗?当然,你必须确保“可见”的安全带有某种登录/访问控制的脚本;在任何情况下,您都应该按照我所述创建一些东西来执行这些管理任务,否则很可能会出现错误/安全问题。@redShadow您能帮我回答这个问题吗?您能帮我回答这个问题吗
Cmnd_Alias A2RELOAD = /usr/sbin/apache2ctl graceful

youruser ALL=NOPASSWD: A2RELOAD
%yourgroup  ALL = NOPASSWD: A2RELOAD
http://{username}:{password}@{mysite.com}:2082/frontend/x3/sql/addb.html?db={dbname}
http://{username}:{password}@{mysite.com}:2082/frontend/x3/sql/adduser.html?user={dbuser}&pass={dbpass}
http://{username}:{password}@{mysite.com}:2082/frontend/x3/sql/addusertodb.html?db={dbname}&user={dbuser}&ALL=ALL
http://{username}:{password}@{mysite.com}:2082/frontend/x3/addon/doadddomain.html?domain={newsite.com}&user={ftp_user}&dir={ftp_dir}&pass={ftp_pass}&pass2={ftp_pass}