Php apache通过脚本启动临时虚拟主机

Php apache通过脚本启动临时虚拟主机,php,apache,Php,Apache,假设我有一个本地apache2,我需要一个脚本来运行apache2,并带有一个特殊的注入虚拟主机 更多提示: 我在Windows10上安装了xampp PHP 7.3.10、MariaDB 10.4.8、mysqlnd 5.0.12-dev、Apache 2.4.41。 几个PHP项目遍布硬盘。到目前为止,在每个项目交换机上启动apache2服务之前,我修改了./apache/conf/extra/httpd-vhosts.conf文件。这样,我就可以将项目文件夹保留在原来的位置,而无需将它们复

假设我有一个本地apache2,我需要一个脚本来运行apache2,并带有一个特殊的注入虚拟主机

更多提示: 我在Windows10上安装了xampp PHP 7.3.10、MariaDB 10.4.8、mysqlnd 5.0.12-dev、Apache 2.4.41。 几个PHP项目遍布硬盘。到目前为止,在每个项目交换机上启动apache2服务之前,我修改了./apache/conf/extra/httpd-vhosts.conf文件。这样,我就可以将项目文件夹保留在原来的位置,而无需将它们复制到xampp安装文件夹中

现在我很好奇是否可以为每个项目编写一个脚本bat或sh,安装的GitShell将正常运行mariadb,而apache2则会为特定的项目文件夹编写一个临时虚拟主机DocumentRoot

我目前能做的是: 在项目文件夹中放置httpd-vhosts.conf文件和startProject.sh脚本。运行脚本将复制xampp安装中的配置文件,然后启动apache2服务。 这是可行的,但只能启动一个apache2流程,不能同时启动多个项目

我想要的是: 我想在启动apache2时使用一个指定VirtualHost by参数的参数。 也许可以说apache2使用一个特殊的配置文件,而不是自己项目结构中的文件。 或者我想通过启动apache2进程来使用一个参数,该进程为已经指定的VirtualHost指定一个alternatie DocumentRoot文件夹

目前我的做法是:

!\bin\bash BASEDIR=$dirname$0 xamppPath=C:\xampp\v7.3.10 cd$xamppPath apache\bin\httpd.exe-S$BASEDIR\httpd-vhosts.conf& 但是-S只打印虚拟主机,不设置配置文件

如何在不覆盖xampp安装文件夹中的现有配置文件的情况下,在硬盘上某处使用脚本运行项目?

更简单:构建两个祝贺文件,使用选项-f指定有效的配置文件,而不是-S

可能更复杂:user-D名称并在配置文件中使用,以选择要应用于特定开始的部分


注意:我使用apachectl,而不是直接使用httpd来启动/停止Apache。

在xampp包中没有直接的apachectl文件,因此我不可能使用-D。这将是一个完美的解决方案,但不幸的是不可能

现在,我必须从我想要启动的每个项目中重写httpd-vhosts.conf文件。因此,我使用的是修改后的脚本解决方案:

!\bin\bash BASEDIR=$dirname$0 xamppPath=C:\xampp\v7.3.10 cp-f$BASEDIR\httpd-vhosts.conf$xamppPath\apache\conf\extra\httpd-vhosts.conf 睡眠1 cd$xamppPath apache\bin\httpd.exe& 这不是一个完美的解决方案,但它是有效的。 使用两个不同的项目同时使用两个apache服务是不可能的,但到目前为止还没有必要