如何在php中为windows创建localhost域管理?
Posted
技术标签:
【中文标题】如何在php中为windows创建localhost域管理?【英文标题】:How to create localhost domain management for windows in php? 【发布时间】:2013-10-08 10:33:58 【问题描述】:我对这件事很着迷,但我想自己在 php 中制作它。
我在我的系统中安装了以下内容。
WAMP Server 2.2,包括以下内容
Apache Web 服务器版本 2.2.222 mysql 服务器版本 5.5.24 PHP 版本 5.3.13 操作系统版本 Windows 8 64 位主机文件位置:
C:\Windows\System32\Drivers\etc\hosts
WAMP 服务器的位置:
C:\wamp
Apache Web 服务器的位置:
- C:\wamp\bin\apache\apache2.2.22
- C:\wamp\bin\apache\apache2.2.22\conf\extra\httpd-vhosts.conf
MySQL 服务器的位置:
C:\wamp\bin\mysql\mysql5.5.24
PHP 的位置:
C:\wamp\bin\php\php5.3.13
我有一个在 localhost
中创建 VHost 的简单示例
例如我想在 80 端口
为此,我有以下步骤:
(1) 启用 Apache 模块
rewrite_module vhosts_alias_module(2) 打开 httpd.conf 文件以启用 Vhost 设置
C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf
虚拟主机
Include conf/extra/httpd-vhosts.conf // Remove the # before Include and save file
(3) 在httpd-vhosts.conf文件中添加VHost入口
<VirtualHost *:90>
DocumentRoot "C:/mylocalsite.com/"
ServerName www.mylocalsite.com
# This should be omitted in the production environment
SetEnv APPLICATION_ENV development
<Directory "C:/mylocalsite.com/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "C:/mylocalsite.com/logs/error.log" // Logs folder should be exists
CustomLog "C:/mylocalsite.com/logs/access.log" common
</VirtualHost>
(4) 在 hosts 文件中添加条目 使用管理员权限在记事本中打开文件 C:\Windows\System32\Drivers\etc\hosts 在文件末尾添加以下行并保存。
127.0.0.1 www.mylocalsite.com
(5) 重新启动(来自 WAMP)Apache Web 服务器并在浏览器中运行 http://www.mylocalsite.com/ 将起作用。
现在,我的问题是如何使用 PHP/JSP 或任何其他语言以动态方式执行上述步骤。
假设我将在 html 中创建一个包含以下字段的表单,并在提交时为该域创建新的 MySQL 条目。
编辑:
Domain Type: select option or Radio Options ( Root/Sub-Domain )
Sub-Domain Name ( Optional ): Text field
Domain Name: Text field
Project Path: text field
Log Folder Path: text field
Tmp Folder Path: text field
Database Type: text field ( mysql/pgsql )
<Submit>
当我点击 按钮时,它会自动在 hosts 文件中创建域条目,在 httpd-vhosts 中创建 vhosts 条目。 conf 文件。
并且,当重新启动 Apache 服务器时,它会自动运行动态创建的域或子域。
谁能知道我怎样才能以任何语言为本地系统建立以下内容?
【问题讨论】:
在本地机器上开发类似托管环境是一个很好的开始。 是的,它对于那些不知道如何在本地环境中创建的用户也很有用。 【参考方案1】:不要使用网络表单。你可以看到我的批处理文件演示:
(1) 创建vhost模板template.txt
<VirtualHost *:90>
DocumentRoot "_ROOT_"
ServerName _DOMAIN_
# This should be omitted in the production environment
SetEnv APPLICATION_ENV development
<Directory "_ROOT_">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "_ROOT_/logs/error.log"// Logs folder should be exists
CustomLog "_ROOT_/logs/access.log" common
</VirtualHost>
(2) 创建add_vhost.bat
@echo off
set /p domain=Domain (www.mylocalsite2.com):
set lineHost=127.0.0.1 %domain%
REM Create the domain entry in hosts file
echo %lineHost% >> C:\Windows\System32\drivers\etc\hosts
set /p folder=Folder (C:/mylocalsite2.com/):
REM Create vhost entry in httpd-vhosts.conf file
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (template.txt) do (
set str=%%i
set str=!str:_ROOT_=%folder%!
set str=!str:_DOMAIN_=%domain%!
echo !str! >> C:\wamp\bin\apache\apache2.2.22\conf\extra\httpd-vhosts.conf
)
(3) 以管理员身份运行add_vhost.bat(写入HOSTS文件)
【讨论】:
哇,你给出的答案真是太棒了。我会尝试并实施。这个东西会在两个文件中添加新的条目。如果我想更新任何虚拟主机条目或禁用/删除相同的东西,或者我应该以在文件中查找主机并替换现有虚拟主机条目的方式进行更改。 因为我认为我们需要管理员权限才能访问/写入主机文件。所以,任何解决方案。 我想我必须授予用户权限到管理界面,用户可以设置访问系统资源的权限和管理员分别在 Windows/Linux 中运行批处理文件/SH 文件。 在从 HTML 界面生成新域时,我是否需要创建可以由经过身份验证的用户在后台运行的批处理文件? 第一部分(修改主机文件)工作正常。谢谢。但是第二部分(模板和虚拟主机)对我不起作用。我不知道为什么以上是关于如何在php中为windows创建localhost域管理?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 中为 PHP 7 安装 PDO 驱动程序 Informix
如何在Windows中为多个请求/作业生成基于php的Web应用程序的队列系统?