我试图用Apache 2.4处理程序编译PHP 5.4,因为它不是官方可用的(我知道apachelounge.com非官方提供,但我不需要它,我需要自己编译它)。 我在PHP的deps文件夹中包含了必需的Apache include / lib文件夹,在这里应用了提交的补丁: https ://bugs.php.net/bug.php?id=62267而且我获得了成功的构build。 但不幸的是,它没有为我工作(Apache未启动),我不断收到事件日志中的以下错误: >>> httpd.exe: Syntax error on line 175 of /path/to/httpd.conf: Module "sapi\\apache2handler\\mod_php5.c" is not compatible with this version . >>> of Apache (found 20110619, need 20120211). Please contact the vendor for the correct version. httpd.conf第175行: LoadModule php5_module ../../php/php-5.4.5/php5apache2_4.dll 它出什么问题了? 有什么build议么??
我最近build立了一个Ubuntu 12.04服务器(Apache 2.2和PHP 5.3.10)。 当我testing它的时候,我注意到在Apache访问日志中,一个未知的IP地址正在尝试执行PHP CGI注入攻击,利用这里描述的已知缺陷: http://www.osvdb.org/81633 幸运的是,我碰巧注意到这一点,我阻止了入侵者进入服务器,但注入攻击成功地改变了我的一些php.ini设置。 根据漏洞描述,唯一免疫注入的PHP版本是5.3.13和5.4.3+。 我试图通过使用这个(显然是stream行的)非官方的仓库升级到5.5: add-apt-repository ppa:ondrej/php5 它升级了我的PHP,但它也摧毁了我的Apache设置,并将Apache升级到了2.4,这是我无法使用的。 所以我不得不回滚系统。 然后,我尝试使用apt-get升级到PHP 5.3.13,但显然5.3.10是官方Ubuntu 12.04回购版中的最高版本。 有点令人沮丧,至less可以说。 所以我的问题是:我怎样才能保护PHP 3.5.10或在Ubuntu 12.04上安装PHP的“安全”版本,这样我就可以防止这种攻击再次发生? 我绝对不想要Apache 2.4,我需要一个LTS服务器。
我试图从我的apache日志文件中获得一些意义:我想parsing我的访问日志,并有一些关于200 status code命中(每个命中多less次)的统计信息。 所以我试着学习一些awk的魔法,在这里我现在得到了: grep "HTTP/1.1\" 200" access.log | awk '{print $7 } ' | sort | uniq -c | sort -n 这是我要做的大部分事情:从access.log中select以200次命中结束的所有日志条目,然后select与生成的命中path对应的部分,对它们进行sorting,对每个唯一元素进行计数并根据数字进行sorting这个独特元素被击中的时代。 所以结果如下所示: 1 /public/img/upload/image_3.jpg 2 /public/img/upload/image_2.jpg 8 /public/img/upload/image_1.jpg 18 /public/js/main.js 33 / 236 /index.html 我试图进一步推动它: 因为我有logrotate,我有许多其他文件,如access.log.1, …, access.log.N ,我想获得统计所有这些统计。 我find的唯一的解决scheme是使用grep "my 200 expression" -R /pathToDirWithLogs这将grep目录中的所有文件,这显然是不好的,因为它不仅会logginggrep。 列出文件也不是一个选项,因为我不知道数字N. 我真的不关心/ public / img / upload /中的每个单独的文件,我只关心其中有多less人被击中。 […]
我在ubuntu 13.10上设置了HHVM 3.1.0(夜间)的Apache 2.4。出于某种原因,服务器正确地提供了hhvm文件(.php),但是当我尝试加载.html / .css或者其他任何静态文件时启动下载而不是显示 我在stackoverflow问这个问题,但它被搁置,因为它是服务器相关: 原始post 我的HHVM server.ini如下所示: hhvm.server.port = 9000 hhvm.server.type = fastcgi hhvm.server.default_document = index.php hhvm.server.source_root = /var/www hhvm.enable_static_content_from_disk = true 并且apache2.conf包含以下代理通配符: ProxyPassMatch ^/(.*.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/$1 有什么build议?
如果启用configuration的configuration包含Alias指令和目录段,VHost会将这些指令应用到启用了站点的所有站点还是默认(第一个)站点?
服务器:Debian Jessie Apache:2.4.9-1 PHP:5.5 我想要的是所有非文件和非目录redirect到我自己处理它们的index.php。 由于我的项目的性质,我必须从一个虚拟主机内部工作。 我正在使用虚拟主机(vHosts)和mod_rewrite在我正在工作的Web项目。 这是vHost文件… <VirtualHost *:80> ServerName foo.com ServerAlias www.foo.com ServerAdmin [email protected] DocumentRoot /srv/foo/main/www/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php [L] </IfModule> </VirtualHost> vHost按预期工作,重写规则将请求redirect到index.php。 但是当我尝试访问服务器上的文件时,例如: foo.com/css/style.css 位于: /srv/foo/main/www/css/style.css 我的请求被redirect到index.php 这很奇怪,因为重写条件语句应该解决这个问题。 所有文件夹权限都设置为755,所有文件都设为644。 我已经能够毫无疑问地确认重写条件是不匹配的。 我可以通过查看Apache的错误日志,并为mod_rewrite启用debugging输出来看到这一点。 为什么两个RewriteCond语句不正确匹配? 他们可能没有看到vHost DocumentRoot? 更新:closures重写引擎允许我到我正在testing的文件。 IE,我的URI是正确的。 我知道我的路是好的,条件只是因为某种原因失败了。
我有一个使用MySQL的小应用程序。 我在一个使用Apache on Digital Ocean的小型Ubuntu机器上。 如果出现任何问题,我想定期向我发送或以某种方式下载数据库的备份。 我的数据库包含个人信息,如电子邮件和纯文本密码(哈哈),所以我不想做任何事情的数据可能会被盗走。 保持备份只是为了定期做一个数据库转储,然后下载该文件或有一些更复杂的方式,我错过了最好的方法? 人们通常会做什么来保护他们的数据,并确保他们有东西,以防万一他们受到威胁? 谢谢
我有一个服务器设置新的Linux用户创build使用(PHP) shell_exec ( '/usr/sbin/useradd ' . $username ); exec ('usermod -a -G ' . $username . ' '. $username); #add user into the usergroup exec ('usermod -a -G ' . $username . ' www-data'); #add usergroup with the www-data 然后,用户脚本将所有者和文件组更改为此所有者。 服务器设置为suPHP,然后允许这些文件作为所有者运行。 这个设置在Apache 2.2上工作正常,但是在Apache 2.4中打破了。 一切工作正常,除非当我尝试oepn文件,它给出了一个403禁止的错误。 添加用户后重新启动apache修复了这个问题,但这对我来说不是一个可行的解决scheme。 用户添加使用Web服务器,因此我需要能够做到这一点,而不必每次重新加载/重新启动Apache。 我已经search了几个小时,试图解决这个问题,但一直没能这样做! 我正在运行的Ubuntu 14.04,我也不能降级到Apache 2.2。
从Ubuntu 12.04 LTS迁移到Ubuntu 14.04 LTS后,我的Apache SVN(mod dav_svn)行为改变了。 从服务器上更新已经签出的项目时,我开始无权打开编辑操作的根目录 。 我有独立的AuthzSVNAccessFile文件的多个回购,有一些共享相同的AuthUserFile文件。 以前,在12.04 LTS上,从浏览器到回购站(例如/ Example1)根目录的所有请求都会提示用户login。 我见过的build议是在AuthzSVNAccessFile中添加* = r ,这不是一个选项,因为所有的用户都必须login,即所有的repos都需要authentication。 我正在修复更新时修复“未经授权打开编辑操作的根”错误消息。 细节 /etc/apache2/mods-available/dav_svn.conf示例条目: … <Location /Example1> DAV svn SVNPath /home/svn/Example1 AuthzSVNAccessFile /etc/subversion/svnauthz-Example1.conf Satisfy Any Require valid-user AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/subversion/svn-passwords </Location> <Location /Example2> DAV svn SVNPath /home/svn/Example2 AuthzSVNAccessFile /etc/subversion/svnauthz-Example2.conf Satisfy Any Require valid-user AuthType Basic […]
我正在使用Apache / 2.4.10(Win32) ,我有一个关于SERVER_NAME和HTTP_HOST之间的关系的问题。 我注意到了一个奇怪的(至less我认为)apache的行为,在我的httpd.conf我有: ServerName example.com:80 现在,我通过从Apache 服务器获取的PHP 服务器variables进行testing。 从PHP(上面的链接): 如果脚本在虚拟主机上运行,则将为该虚拟主机定义的值。 我没有使用任何虚拟主机。 SERVER_NAME被HTTP_HOST覆盖,例如,如果我将通过m.example.com访问网站, SERVER_NAME被HTTP_HOST覆盖,两者都等于相同的值,现在尽pipe它已经过testing,但我想知道: apache是否使用任何虚拟主机,而我不知道它, 这里是 我的httpd.conf文件 ? 是PHP还是Apache的行为? 它是由PHP或Apache自动完成(覆盖)(在这一点上我不知道谁是有罪的)? 编辑: 覆盖是由Apache完成的,我已经使用.htaccess文件进行了testing,结果是甚至在variables传递到PHP ,覆盖已经完成。 所以覆盖是由Apache完成的,唯一的问题是这样的覆盖的条件是什么,更重要的是有一种方法来获取或从httpd.conf中提供的ServerName值的variables?