- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 httpd.conf 文件,其中包含以下内容:
<IfModule unixd_module>
<If "env('OS') == 'Darwin'">
User daemon
Group admin
</If>
<Else>
User www
Group scm
</Else>
</IfModule>
我想要做的是将 OSX 上的开发环境中的 httpd 实例的用户 ID 设置为一个用户,但在部署到 Ubuntu 时将其设置为另一个用户。我收到语法错误消息:
AH00526: Syntax error on line 32 of /usr/local/apps/apache2/conf/httpd.conf:
User not allowed here
我查看了If指令,这里是允许的。如果我注释掉用户/组,我不会收到语法错误。如果没有 IF/Else,并且仅使用一个用户,则此方法有效。如果我尝试对用户/组使用该条件,我会收到错误。这在 httpd.conf 中可能吗?如果是这样,那又如何呢?有不同的方法来完成同样的事情吗? “OS”环境变量在每个环境中通过“export OS=uname
”设置。这是 Apache httpd 2.4.4 中的内容。
最佳答案
我终于找到时间更深入地检查它,这是因为 Override 行为。我简要检查了 2.4.4 源代码,在我看来,基本上只有当前目录或位置上下文中“覆盖”列表中的指令才可以用 If/Else 覆盖。
由于“用户”和“组”应该在整个安装过程中设置一次,并且不能通过“.htaccess”或根据目录/位置上下文进行修改,因此它们不在某些默认的“AllowOverride”上列表,并且您不能简单地将其放入这样的上下文中以使它们可被覆盖。不过,强制用户/组选项仅在 apache 内部“配置树”之上有效是有道理的。
为了以合理的方式实现您需要的行为,正如我在评论中简短解释的那样,您应该使用“envvars”机制,该机制在 Debian 中默认可用(也可能是 Ubuntu)。
简而言之,/etc/apache2/envvars 文件包含例如
unset HOME
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
SUFFIX=
fi
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2/apache2$SUFFIX.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
export LANG=C
export LANG
它是由/etc/init.d/apache2 启动脚本获取/继承的,因此在 httpd 主配置文件(例如 apache2.conf)中可以使用以下部分
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
简单修改/etc/apache2/envvars 就可以让你得到你需要的东西。您还可以在 OSX 上使用的用户/组的编译设置中更改用户/组的一些默认值,并仅在 Ubuntu 端使用该脚本。
关于Apache httpd.conf 用户/组设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096694/
我正在研究PyroCMS的Docker版本。这是我拥有最新文件的repository。如您所见,我正在运行一个堆栈:CentOS 7(带有Supervisord),MySQL,Apache和PHP。这
为了避免对我本地托管的 apache-tomcat Web 服务器上托管的 Web 应用程序进行点击劫持攻击,我正在尝试编辑“httpd.conf”文件以向其附加 X 选项。 用“sudo nano/
更改 httpd.conf 文件后是否需要重新启动 httpd 才能使更改生效? 最佳答案 是的。 HTTPD.conf 是在 apache 启动时读取的,因此要使任何更改生效,您都需要重新启动它。
我的 CentOS7 服务器上有一个 Laravel 项目,位于文件夹“/var/www/html/myProject”中。 我已将“DocumentRoot”和配置目录中的/etc/httpd/co
我在别人的 linux 服务器上(共享主机)。我没有root访问权限。我已经确定它是一个 Redhat 4.1.2-46,以 Centos Release 5.9(Final) 的形式运行。 我有该站
我需要使用/etc/init.d/httpd status 命令来验证它是否在 shell 中运行。我不想使用 pidof pgrep 等——类似 retval=`/etc/init.d/httpd
我已经下载了 httpd-2.4.16.tar.gz 来自 http://www.apache.org/dist/httpd/ 的包裹 并在我的 ubuntu 14.04 LTS 上提取了两次,但我找
我正在使用免费套餐 Amazon AWS EC2 微型实例并托管一个 Wordpress 网站。由于内存太低,我总是会出现“Error Establishing to Database”之类的常见错误
当我启动我的centOS 服务器时。它通过我的错误如下所示。 启动 httpd: (20)Not a directory: httpd: 无法打开错误日志文件/etc/httpd/logs/error
有谁知道什么会导致 Apache 的错误日志中出现此错误(特别是在 Arch Linux 中): PID file /run/httpd/httpd.pid not readable (yet?) a
我设置了 AWS EC2(Windows Server 2012 R2 Base),允许入站 RDP、HTTP 和 HTTPS,并安装了 Wampserver 以及来自 Microsoft 的 64
当我想在centOS 6.7 上重启httpd 服务时出现以下错误: /etc/init.d/httpd restart Stopping httpd:
x-httpd-php5x 和 application/x-httpd-php5x 有什么区别? 多年来,我一直在使用 application/x-httpd-php 和我的网络托管 (Linux),
我已将 apache httpd 服务器从 2.4.6 升级到 2.4.46。 当我触发 systemctl start httpd 时,它显示以下错误: Starting httpd: /usr/s
我有一个 tomcat,监听 8080 端口,还有一个 apache httpd 监听 80 和 443 端口。 The httpd proxies the client through to tom
我安装了 Centos 7 的新副本。然后我重新启动了 Apache,但 Apache 无法启动。我在这个问题上停留了 3 天。连支持都想不通这个错误。 sudo service httpd star
我最近开始升级我的httpd版本 2.2 从带有 RHEL 4 的旧服务器到附带 httpd 的 RHEL 7 2.4 版。 我注意到的变化之一是 conf.modules.d 包含以下文件的目录:
我在我的linux中使用php7.1: 我可以检查一下: # php -v PHP 7.1.16 (cli) (built: Jun 25 2018 08:12:28) ( ZTS ) 因此在我的 h
我正在使用一个使用 Smarty 模板引擎的框架。它在 Windows 中运行良好,但当我尝试在 LAMP 服务器中运行它时,我收到一条消息,如 SELinux 在您的系统上检测到可疑行为。我附上了整
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我是一名优秀的程序员,十分优秀!