gpt4 book ai didi

PHP域映射脚本

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:00 27 4
gpt4 key购买 nike

我不知道这个的确切术语是什么,所以我的标题可能不正确。

基本上我要做的是编写一个具有输入字段的 PHP 脚本:

Domain Name: <input type='text' name='dname' id='dname' value='http://example.com' />
<input type='submit' name='addname' value='Add A Domain' />

当用户在文本字段中输入自己的域并按提交时,脚本会自动创建一个目录,将一些 PHP 脚本复制到那里并将域名映射到那里。 (当然,域名指向我们的服务器。)

我已经弄清楚了 mkdir() 和 copy() 部分,但是我无法弄清楚映射部分。如何向 map 添加条目 http://example.com到/home/user/public_html/copy1/自动,使用 PHP?

最佳答案

虽然您可以直接从您的 PHP 页面执行此操作,但我建议不要这样做,原因有很多,从高失败风险(例如,页面执行突然中断)到安全风险(您的 httpd 用户将拥有对自己的配置的写入权限以及文件系统上不应该写入的一些内容)。

前段时间我写了一个类似的控件“网站创建控制面板”,它的工作方式几乎是这样的:

  • PHP 脚本接收网站创建请求并将其存储在某处(例如数据库中)。点。
  • 另一个脚本,通过 cron 以 root 身份运行,比方说,五分钟检查网站创建请求队列。如果有的话:
    • 将站点创建任务标记为“已锁定”
    • 在适当的位置创建目录,填充脚本等。
    • 根据需要更改所有权限
    • 创建新的虚拟主机配置,并启用它
    • 让网络服务器重新加载自己的配置
    • 将站点创建任务标记为“完成”

第二个脚本可以用你喜欢的任何语言编写,PHP、Python、Bash、...

关于apache配置

要创建“映射”到您的域的目录,您可以使用如下内容:

首先,“slugify”您的域名。我通常采用(已清理!)域名,并用双破折号转换所有点(这不是有效的域名部分)。我不喜欢文件/目录名称中的点与文件扩展名分隔。

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

<VirtualHost *:80>
ServerName www.exampple.com

DocumentRoot `/my-sites/wwwroot/www--example--com`

<Directory "/my-sites/wwwroot/www--example--com">
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
AllowOverride All
</Directory>

ErrorLog /var/log/apache2/www--example--com_error.log
CustomLog /var/log/apache2/www--example--com_access.log vhost_combined
</VirtualHost>

<VirtualHost *:80>
## redirect non-www to www
ServerName www.example.com
ServerAlias example.com

RedirectMatch permanent ^(.*) http://www.example.com$1
</VirtualHost>

假设您将站点文件放在目录中,例如 /my-sites/wwwroot/www--example--com

一些与安全相关的改进

就我而言,我也更喜欢以root 运行第二个脚本;为此,您必须添加一些更改,以便让特权较低的用户在您的系统上做一些事情:

  • 为您的用户创建一个具有写入权限的目录,比方说 /my-sites/conf/vhosts
  • 创建一个包含以下行的 apache 虚拟主机:Include "/my-sites/conf/vhosts/*.vhost",并启用它

然后,让您的用户重新加载 apache 配置,方法是安装 sudo 并将其添加到您的 /etc/sudoers:

Cmnd_Alias A2RELOAD = /usr/sbin/apache2ctl graceful

youruser ALL=NOPASSWD: A2RELOAD
%yourgroup ALL = NOPASSWD: A2RELOAD

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

关于PHP域映射脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693549/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com