Articles of PHP

将Apache虚拟主机从系统的其余部分分离出来

我正在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

将S3桶直接安装到EC2实例中是否安全?

正如我问题的标题所说,我想知道这是否是一个好的做法, 我知道我可以挂载到一个EC2实例,但是我想知道,如果我将添加更多的实例来扩展我的应用程序,这可能会导致一些问题; 你有这方面的经验吗? 我使用S3来允许通过PHP脚本进行file upload,所以基本上问题是: 使用注释是否是一个好习惯,还是有更好的方法来处理用户file upload? 提前致谢

Php5-fpm如果有很多访问者会崩溃

我决定把我的OP从Litespeed改成Nginx,因为我读了很多关于Nginx会花费的资源。 我运行一个WordPress用户在线500个用户 好的,谢谢你帮助我:)编辑了一些东西。 我还有一些问题: 我必须删除; 在下午之前。 设置? 我删除了它configuration什么? 我在/ etc / php5 / fpm中有两个快速的cgi,一个叫做php-fpm.conf,一个在/etc/php5/fpm/pool.d中叫做www.conf? 我在晚上尝试新的configuration,当我醒来时,我已经有一个空白页面。 最佳: top – 13:55:27 up 1 day, 19:28, 2 users, load average: 0.18, 0.36, 0.19 Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3974264k total, 1051360k used, […]

如何在linux ubuntu上configurationPHP CLI作为www-data运行?

我在我的Ubuntu上有一个symfony2应用程序。 Symfony有很多有用的控制台命令(如php app/console cache:clear或php app/console assets:install web )。 问题是如果我以root用户身份运行它们,新生成的文件将具有root:root用户/ root:root组,如果我访问我的网站,我会得到错误(因为apache无法读取/修改这些文件 – >他们应该有www-data:www-data )。 运行chown www-data:www-data解决了这个问题,但是每次运行我清除caching都不是一个解决scheme。 如何将PHP CLIconfiguration为始终以www-data用户/组身份运行? 要么 我怎样才能作为一个不同的用户(作为根,运行它作为万维网数据)运行一个命令?

Nginx – 将所有请求路由到单个脚本

我有一个PHP脚本处理脚本路由,并做各种花哨的事情。 它最初是为Apachedevise的,但我试图将它迁移到nginx的几个框中。 现在,我正试图在testing服务器上进行平滑处理。 所以脚本的工作方式是使用.htaccess文件拦截目录(在Apache中)的所有HTTPstream量。 以下是这个样子: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.+$ index.php [L] </IfModule> 非常简单 所有请求都通过index.php运行,简单明了。 我正在寻找模仿nginx上的行为,但我还没有find一种方法。 有人有什么build议? 这里是我的nginx.conf文件的一个副本。 请注意,它是专为我只是试图让它的工作; 大多是复制/粘贴作业。 user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include /etc/nginx/mime.types; default_type text/plain; include /etc/nginx/conf.d/*.conf; server { listen 80; […]

名称parsing中的临时失败:主机名查找失败

我已经有一个PHP脚本运行好几个月的脚本。 它最近停止了工作。 这个脚本连接到gmail发送一封电子邮件给我的客户。 最近,当我运行脚本时,我开始出现这个错误: The SMTP connection failed to start [tls://smtp.gmail.com:465]: fsockopen returned Error Number 0 and Error String 'php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution' 请记住,这是零代码更改。 我已经看了我的resolv.conf,它似乎是好的: nameserver 208.67.222.222 我可以ping gmail.com: # ping smtp.gmail.com PING gmail-smtp-msa.l.google.com (74.125.93.111) 56(84) bytes of data. 64 bytes from qw-in-f111.google.com (74.125.93.111): icmp_seq=1 ttl=247 time=26.7 ms 我可以通过l connect连接到谷歌和其他网站没有问题。 我login到我的Gmail帐户没有问题(也没有validation码)。 […]

我怎样才能找出为什么我的php5-fpm无法启动?

我得到504网关超时,当我尝试到达我的服务器一个小检查没有发现任何日志在php5-fpm日志,但只是为了确保,我试图重新启动它。 当我试图重新启动它: sudo service php5-fpm restart 我得到[fail]但是当我做 sudo service php5-fpm stop sudo service php5-fpm start 我没有错误。 如果没有日志,我该如何进行调查? 我能做什么?

在CentOs 5上安装/启用PHP Pecl Intl扩展

原始问题: 我无法在我的CentOs 5机器上安装PHP Pecl Intl扩展。 用以下命令安装icu和libicu之后: $ yum install icu $ yum install libicu 我试图安装Intl扩展,如下所示: $ /usr/bin/pecl install intl 我selectsearchICU库和头文件的默认位置。 它最终崩溃像这样: checking whether to enable internationalization support… yes, shared checking for icu-config… no checking for location of ICU headers and libraries… not found configure: error: Unable to detect ICU prefix or no failed. Please verify […]

多站点托pipe – 重要的漏洞被错过,以确保彼此安全的网站?

编辑#2 2015年7月23日:寻找一个新的答案,确定一个重要的安全项目错过了在下面的设置或可以给出理由相信一切都涵盖。 编辑#3 2015年7月29日:我正在寻找一种可能的错误configuration,比如无意中允许某些可能被利用来绕过安全限制或者更糟糕的事情而让事情变得更加严重。 这是多站点/共享主机设置,我们希望使用一个共享的Apache实例(即在一个用户帐户下运行),但PHP / CGI作为每个网站的用户运行,以确保没有网站可以访问另一个网站的文件,我们希望确保没有错过任何东西(例如,如果我们不知道符号链接攻击预防)。 以下是我到目前为止: 确保PHP脚本作为网站的Linux用户帐户和组运行,并且要么被监禁(如使用CageFS),要么至less使用Linux文件系统权限进行适当的限制。 使用suexec来确保CGI脚本不能以Apache用户身份运行。 如果需要服务器端包含支持(例如在shtml文件中),使用Options IncludesNOEXEC可以防止CGI在你不期望的情况下运行(尽pipe如果使用suexec,这应该不是那么重要)。 有符号链接攻击保护,以便黑客不能欺骗Apache以明文forms提供另一个网站的文件,并披露诸如DB密码之类的可利用的信息。 configurationAllowOverride / AllowOverrideList只允许黑客无法利用的任何指令。 如果上述项目正确完成,我认为这不是一个问题。 如果不是很慢并且不能以root身份运行,我会select使用MPM ITK,但是我们特别想使用共享的Apache,但是确保它安全地完成。 我发现http://httpd.apache.org/docs/2.4/misc/security_tips.html ,但这个话题并不全面。 如果知道这很有帮助,我们打算将CloudLinux与CageFS和mod_lsapi配合使用。 还有什么可以确保要做或知道吗? 编辑2015年7月20日:人们已经提交了一些很有价值的替代解决scheme,但请注意,这个问题只针对共享Apache安装的安全性。 特别是有没有覆盖以上可以让一个网站访问另一个网站的文件或妥协其他网站? 谢谢!

.htaccess不能正确地redirect到www-prefixed页面

我正在尝试redirect一个url没有www。 到www.version(example.com到www.example.com)。 我使用平常 RewriteCond %{HTTP_HOST} ^example\.com [nc] RewriteRule (.*) http://www.example.com/$1 [R=301,L] 这适用于我所有的其他项目。 但是,在这个特定的网站,它以一个redirect循环结束。 这是奇怪的部分:我试图curl非www版本,以查看它使用curl –get http://example.com –dump-header domain.header > domain.html发送什么标题curl –get http://example.com –dump-header domain.header > domain.html 。 头文件看起来像这样: HTTP/1.1 301 Moved Permanently Date: Mon, 06 Jun 2011 14:45:16 GMT Server: Apache/2.2.16 (Debian) Location: http://example.com/ Vary: Accept-Encoding Content-Length: 310 Content-Type: text/html; charset=iso-8859-1 但是,生成的HTML文件是这样的: <!DOCTYPE HTML PUBLIC […]