gpt4 book ai didi

php - DocumentRoot 始终默认为/var/www/html 且无法更改

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

我已经使用 PuPHPet (Vagrant-Puppet-PHP) 设置了一个虚拟主机显然 PuPHPet 使用此配置为我创建了一个默认站点 10-default_vhost_80.conf

 <VirtualHost *:80>
ServerName default

## Vhost docroot
DocumentRoot "/var/www/html"

## Directories, there should at least be a declaration for /var/www/html

<Directory "/var/www/html">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Require all granted

<FilesMatch "\.php$">
Require all granted
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>

</Directory>

## Logging
ErrorLog "/var/log/apache2/default_vhost_80_error.log"
ServerSignature Off
CustomLog "/var/log/apache2/default_vhost_80_access.log" combined
</VirtualHost>

我已经创建了这个站点配置 site_dev.conf

<VirtualHost *:80>
ServerName site.dev

## Vhost docroot
DocumentRoot "/var/www/web"

## Directories, there should at least be a declaration for /var/www/web

<Directory "/var/www/web">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Require all granted

<FilesMatch "\.php$">
Require all granted
SetHandler proxy:fcgi://127.0.0.1:9000

</FilesMatch>

</Directory>

## Logging
ErrorLog "/var/log/apache2/av_0rjxvm6sfxhm_error.log"
ServerSignature Off
CustomLog "/var/log/apache2/av_0rjxvm6sfxhm_access.log" combined

## Server aliases
ServerAlias www.site.dev

## SetEnv/SetEnvIf for environment variables
SetEnv APP_ENV dev
</VirtualHost>

默认配置是apache2.conf

 ServerName "local.puphpet"
ServerRoot "/etc/apache2"
PidFile ${APACHE_PID_FILE}
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15

User www-data
Group www-data

AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>


HostnameLookups Off
ErrorLog "/var/log/apache2/error.log"
LogLevel warn
EnableSendfile Off

#Listen 80


Include "/etc/apache2/mods-enabled/*.load"
Include "/etc/apache2/mods-enabled/*.conf"
Include "/etc/apache2/ports.conf"

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional "/etc/apache2/conf.d/*.conf"
IncludeOptional "/etc/apache2/sites-enabled/*"

我已经禁用了 10-default_vhost_80 并重新加载了 apache,但是我的 DocumentRoot 仍然指向 /var/www/html/ 我是不是遗漏了什么?

最佳答案

所以我所做的就是将 /var/www/html 变成一个符号链接(symbolic link)并指向 /var/www/web。这同时解决了我的问题。

更新
我使用上面的解决方案发现了另一个问题,它影响了我拥有的 xdebug 配置,并且进程无法在 /var/www/web 中找到文件,因为它正在寻找符号链接(symbolic link) /var/www/html 中的文件。所以另一种解决方法是修改 10-default_vhost_80.conf 文件并将 /var/www/html 手动更改为 /var/www/web 并重新启动服务器。到目前为止一切顺利。

更新 2
因此,正确的解决方法是您需要确保在 puphpet 配置器中填充了 Directory Block 并且它会生成 directories 部分您在下面的 yaml 文件中看到。我认为这是因为对 apache 2.4 的更新,所以需要完成此操作。

所以我得到了这个 config.yaml

    av_s4zfpb2muecx:
servername: sandbox.dev
serveraliases:
- www.sandbox.dev
docroot: /var/www/web
port: '80'
setenv:
- 'APP_ENV dev'
custom_fragment: ''
ssl: '0'
ssl_cert: ''
ssl_key: ''
ssl_chain: ''
ssl_certs_dir: ''
ssl_protocol: ''
ssl_cipher: ''
directories:
avd_e84h116m6dg3:
path: /var/www/web
options:
- Indexes
- FollowSymlinks
- MultiViews
allow_override:
- All
require:
- 'all granted'
custom_fragment: ''
files_match:
avdfm_e84h116m6dg3:
path: \.php$
sethandler: 'proxy:fcgi://127.0.0.1:9000'
custom_fragment: ''
provider: filesmatch
provider: directory

此外,如果您发现您的 PHP 文件未被解析,请确保包含 files_match 部分。 puphpet 配置器不会自动添加它,因此您需要通过硬代码添加它。

关于php - DocumentRoot 始终默认为/var/www/html 且无法更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30352753/

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