在不同的服务器环境中,PHP $_SERVER['DOCUMENT_ROOT']超级全局有时会有斜线,有时不会。 我原以为这个问题直接关系到Apache DocumentRoot在httpd.conf文件中的定义: 即我会认为,如果httpd.conf包含结尾斜杠: <VirtualHost *:8880> DocumentRoot /var/www/live/current … 那么echo $_SERVER['DOCUMENT_ROOT']应该给/ var / www / live / current 如果httpd.conf确实包含尾部的斜杠: <VirtualHost *:8880> DocumentRoot /var/www/live/current/ … 然后echo $_SERVER['DOCUMENT_ROOT']应该给/ var / www / live / current / Ubuntu 10.04就是这种情况,但在RHEL 5.5上,即使没有在Apache上定义,也会在$_SERVER['DOCUMENT_ROOT']添加尾部斜线。 任何想法为什么发生这种情况 有没有我错过的configuration参数? 以供参考: RHEL的PHP 5.3.3(问题发生): PHP 5.3.3(cli)(内置:2010年7月23日16:26:53) Ubuntu的PHP版本(没问题): 带有Suhosin-Patch(cli)的PHP 5.3.2-1ubuntu4.2(内置:2010年5月13日20:03:45)
我有问题,哪个用户应该拥有我的www目录 – ftp或apache? 当设置为FTP用户,用户可以添加,remoe和轻松修改文件,但PHP文件系统操作产生权限被拒绝的错误(当然,因为他们需要用户是Apache)。 但是,如果www目录是chown到apache,那么ftpuser将不能执行文件修改和删除等操作。 任何人遇到类似的问题? 什么是修复? 谢谢
我正在build立一个Web服务器,它将把许多不同的网站作为Apache VirtualHosts来托pipe,其中每一个都有可能运行脚本(主要是PHP,其他的)。 我的问题是,我如何将这些虚拟主机中的每一个与其他系统隔离开来? 我不希望网站X读取网站Y或任何服务器的“私人”文件的configuration。 目前我已经使用FastCGI,PHP和SUExec设置了VirtualHosts,如下所述(http://10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ),但是SUExec只能防止用户编辑/执行非自己的文件 – 用户仍然可以读取configuration文件等敏感信息。 我曾经想过要删除服务器上所有文件的UNIX全局读取权限,因为这样可以解决上述问题,但我不确定是否可以安全地执行此操作而不中断服务器function。 我也研究过使用chroot,但是这似乎只能在每个服务器的基础上完成,而不是在每个虚拟主机的基础上完成。 我正在寻找任何build议,将我的VirtualHosts从系统的其余部分。 PS我正在运行的Ubuntu 12.04服务器 我的答案:我几乎按照我目前的configuration结束了,但是为所有的虚拟主机做了一个chroot jail,例如在/var/www有chroot jail,然后把所有的用户数据放在每个group / others r /禁用了w / x权限。 特别是这个选项是可取的,因为这是所有可能的,没有任何修改源代码。 我select了@Chris的答案,因为它被彻底写入,也被认为是FTP和SELinux
我已经有几个站点configuration为使用Apache的VirtualHosts,一直工作得很好。 我最近将服务器的主机名更改为正在服务的域名之一,并将其添加到指向服务器外部IP地址的/ etc / hosts中。 由于我这样做,从我的笔记本电脑访问的域名需要我的Apache的默认“它的作品!” 页。 如果我从/ etc / apache2 / sites-enabled /删除了000-default,它将显示正确的站点。 尝试使用“www”访问网站 前缀带我到正确的网站,无论是否默认是在网站启用。 基于所有这一切,我猜默认configuration正在提供默认页面,因为我已经configuration主机名或/ etc / hosts(或两者),但我不知道如何禁用,而同时留下这些设置。 任何build议欢迎! 编辑 – 我目前的VirtualHostconfiguration如下所示: <VirtualHost *:80> ServerName domain.com ServerAlias www.domain.com ServerAdmin [email protected] DocumentRoot /srv/www/domain ErrorLog /srv/www/domain/logs/error.log CustomLog /srv/www/domain/logs/access.log combined </VirtualHost> 总结:我有几个VirtualHosts设置,这是唯一一个不能正常工作。 我可以访问http://www.domain.com就好了,但http://domain.com把我带到Apache的默认“它的工作!” 页。 如果我禁用000默认configuration它显示正确的页面。 这只是在将服务器的主机名设置为domain.com并将一行到/ etc / hosts指向domain.com添加到服务器的外部IP地址之后才开始发生的。 如果可能,我想离开那些。 编辑:我运行apache2ctl -S因为/usr/sbin/apache2 -S给我“apache2:坏用户名$ {APACHE_RUN_USER}”。 这是输出: VirtualHost […]
在广泛的研究和testing中写出一个值得libapr1的适当的问题时,我发现了一个解决scheme:在guest libapr1重buildlibapr1包。 我以为我会发布这些信息,因为这对其他人可能有用。 问题 当我在Wheezy guest中安装libapache2-mod-php5并尝试启动时,我得到以下内容: root@test01:~# /usr/sbin/apache2ctl start [crit] (22)Invalid argument: alloc_listener: failed to get a socket for (null) Syntax error on line 9 of /etc/apache2/ports.conf: Listen setup failed Action 'start' failed. The Apache error log may have more information. root@test01:~# tail /var/log/apache2/error.log root@test01:~# root@test01:~# head -n 9 /etc/apache2/ports.conf|tail -n 1 Listen 80 这是不变的原始软件包安装,默认情况下不能启动。 […]
我想configurationWindows 主机文件来发送基于IP地址+端口的主机请求。 例如: 127.0.0.1:80 www.site1.com 127.0.0.1:8080 www.sitetwo.com 因为我有端口8080上的Apache侦听和端口80上的IIS(默认)。 所以,我认为最好的办法是修改hosts文件。 这不影响任何东西。 我也没有得到任何错误,也没有任何消息。
我只是做了: sudo aptitude install apache2 这就是我的服务器设置。 没有额外的模块,没有什么。 我在Ubuntu的jaunty。
我有一个前系统pipe理员发出(crt文件)的SSL证书。search文件系统,我发现了几个.key文件。 如何将crt与密钥文件相匹配并确认它们匹配? 这是带有Apache2 modssl的Ubuntu Server 11.10。
我没有真正注意到这个redirect(301)当请求这样一个url没有斜杠(“/”)在最后: http://server/directory 服务器将使用定位到http://server/directory/的位置标题与301redirect永久标头进行响应。 看到这个现场的例子: 用户请求: GET /social HTTP/1.1 ( http://192.168.1.111/social ) Apache服务器响应: HTTP/1.1 301 Moved Permanently Location: http://192.168.1.111/social/ 用户请求: GET /social/ HTTP/1.1 ( http://192.168.1.111/social/ ) Apache服务器响应: HTTP/1.1 200 OK Apache access.log: 192.168.1.130 – – [05/Apr/2014:22:06:47 +0200] "GET /social HTTP/1.1" 301 558 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0" – 192.168.1.130 – – [05/Apr/2014:22:06:47 […]
我有一个运行的Apache服务器,需要一个小的configuration更新。 我想强制Apache重新加载configuration(例如,通过/etc/init.d/httpd reload或apachectl优雅),但我不拥有我们的SSL证书密码。 拥有密码的pipe理员现在不可用。 如果我优雅地重新加载apacheconfiguration,SSL证书是否需要密码? 或者只有在服务器完全重启时才会发生?