我开始使用PHP 5.6的内置PHP OPcache,现在面临一个问题。 我将其设置为使用高达1 GB的RAM,这对于我的网站来说已经足够了,但是它永远无法使用全部1 GB的RAM。 caching被清除了很多次,然后才能分配这个限制,就像你在这张munin图中看到的那样: 所以每隔几天它就从caching中删除所有文件,并重新开始caching它们。 首先,我认为问题是variablesopcache.max_wasted_percentage但它不关心我设置它的值。 我的configuration如下: ; configuration for php ZendOpcache module ; priority=05 zend_extension=opcache.so opcache.enable = 1 opcache.enable_cli = 1 opcache.memory_consumption = 1024 opcache.interned_strings_buffer = 128 opcache.blacklist_filename = /etc/php5/opcache_blacklist.txt opcache.max_accelerated_files = 65407 opcache.revalidate_freq = 5 opcache.fast_shutdown = 1 opcache.max_wasted_percentage = 50 opcache.enable_file_override = 1 我正在使用nginx和FastCGI的Debian Jessie环境。 我想达到caching只有在内存消耗达到1 GB时才被清除。 我已经尝试了这样一个非常小的configuration: ; […]
概述: 我有十几个WP安装在Ubuntu 14.04 LTS,w / PHP 5.5.9和Nginx 1.4.6上。 MySQL在备用节点上运行,而不是在公共networking上运行。 目标: 要让每个WP安装的目录和文件不是世界可读的。 如果恶意用户访问特定的WP安装,我不能让他们能够导航到备用WP安装并读取DB凭据。 细节: Nginx作为www数据运行。 为每个虚拟主机创build一个没有shell的用户。 每个虚拟主机都支持一个WP安装。 PHP-FPM池特定于每个用户/虚拟主机运行。 PHP-FPM池通过socks连接w / Nginx,而不是回环IP。 阅读下面的Wordfence文章,我试图设置文件权限,如下所示: 文件 – 640 目录 – 750 当我像这样configuration权限时,作为www-data运行的Nginx不能再正确访问WP文件。 如果我将权限设置回644 & 755 ,一切都按预期工作。 网站安装在以下结构中: /var/www/site1.com/public /var/www/site2.com/public /var/www/site3.com/public 等等。 每个目录由相应的用户和用户组拥有。 即: site1-com:site1-com /var/www/site1.com 我们有一个WP网站被黑客攻击,他们能够得到一个PHP文件pipe理器脚本到服务器上。 我的理解是这个脚本是由用户www-data运行的。 (检查w / ps aux )如果这是真的,我怀疑恶意用户可以访问所有其他WP安装通过他们的PHP文件pipe理器脚本。 如何改善我的权限设置以加强安全性? 我愿意接受所有build议,即使这意味着重新configuration整个堆栈安装。 提前致谢。
Opencart有这个URL结构: http://example.com/index.php?route=common/home http://example.com/index.php?route=account/register http://example.com/index.php?route=checkout/cart http://example.com/index.php?route=checkout/checkout …我想从index.php?route=直到第一个/ ,正则expression式是index.php\?route\=[^\/]*\/ ,所以所需的url将是,例如, http://example.com/checkout 。 我试过了: location @opencart { rewrite index.php\?route\=[^\/]*\/ / last; rewrite ^/(.+)$ /index.php?_route_=$1 last; } 也试过: location / { if ($query_string ~ "^route=common/home$"){ rewrite ^/index\.php$ http://www.example.com? redirect; } } …但目前为止还没有运气,我仍然可以在URL中看到route=common/home 。 这是我目前的Nginxconfiguration: location / { try_files $uri @opencart; } location @opencart { rewrite ^/(.+)$ /index.php?_route_=$1 last; } […]
我试图将PHP从5.5降级到5.3(而不是select)。 我以为我卸载php 5.5通过input以下sudo apt-get remove "php*" 然后我按照这些指示安装了php 5.3 当我在脚本中调用phpinfo()并运行它时,我仍然得到PHP Version 5.5.9-1ubuntu4.19 但是当我从命令行调用php -v ,我得到PHP 5.3.29 (cli) (built: Sep 2 2016 10:56:16) 当我cd到根目录并键入locate libphp5.so , locate libphp5.sopath只有1个,这就是Apache已经使用的path。 我如何告诉Apache使用5.3?
我有两个url。 一个看起来像这样(这是一个不重写的URL): www.example.com/article.php?id=12 下一个是这样的(这是一个重写的URL): www.example.com/article/12 这两个url正在工作。 我想知道的是,如果用户访问第一个URL,他会自动redirect到第二个URL? 我怎样才能做到这一点? 有没有办法做同样的只使用.htaccess文件? 也请帮助,如果我想包括标题也与我这个丑陋的url将看起来像这样。 www.example.com/article.php?id=12&title=sometitle 预计漂亮的url是这样的 www.example.com/article/12/sometitle 我正在使用的redirect规则是这样的 RewriteRule ^article/(\d+)/([\w-]+)$ article.php?id=$1&title=$2[R=302,L] 即使他访问丑陋的网页,我也不希望用户看到丑陋的url。
我刚刚意识到我的明显问题(以及我在前面提到的问题中提到的StackOverflow问题中的“解决scheme” Content-Encoding: none )很可能只是由于误解实际上是如何工作的。 请在最后查看我的附录。 在我正在构build的PHP应用程序中,我试图pipe理自己的内容编码协商和压缩。 当我将响应头Content-Encoding从PHP内部设置为gzip或deflate ,Apache尊重这一点。 但是,当我将其设置为identity Apache忽略这一点,并压缩响应。 它似乎只尊重非标准的Content-Encoding: none ,因为我在这个堆栈溢出问题的一些答案和他们的评论中发现。 因此,我现在把它设置为none ,从PHP内部,然后通过.htaccess更改标题: Header edit Content-Encoding ^none$ identity …但这真的感觉像一个丑陋的黑客。 我希望我不必这样做,以防万一我切换服务器,例如。 这是一个已知的问题和/或这种非标准的行为logging在某处? 我似乎无法find任何具体的文件。 我也search了Apache的bug追踪器 ,但只能find一个切线相关的bug报告 ,关于Apache不尊重Accept-Encoding头值。 附录 当我在.htaccess禁用Apache的mod_deflate时(还有其他选项可以做到这一点): SetEnv no-gzip 1 …并在PHP中设置Content-Encoding: identity ,Apache保持这个标题和内容完好,就好了。 因此,这是我认为实际发生的事情: 这不是Content-Encoding: none官方的信号给Apache来禁止压缩( Content-Encoding: bogus ,例如,产生相同的结果),这将解释为什么我找不到任何文档。 相反,它只是一个不是RFC标准的值。 因此mod_deflate保持内容不变,假设它是一些不想要干扰的非标准编码。 所以,当我在PHP中设置Content-Encoding: identity ,mod_deflate可能认为这是一个有效的RFC标准,意味着内容还没有被压缩,而且由于启用了mod_deflate,所以继续压缩它。 此外,如果我将Content-Encoding设置为gzip或deflate ,例如,mod_deflate可能会将其完全保留,或尝试压缩,但压缩algorithm会识别内容已被压缩。 也许有人可以证实这是否是对实际发生的事情的正确解释? 所以,一个可能的解决scheme是要么禁用我的PHP应用程序pipe理的一些选定的文件/path的mod_deflate,要么如果我的内容已经以其他方式压缩了,甚至可以禁用mod_deflate /站点范围/服务器范围。
我只为一个站点启用了“ 失败的请求跟踪” ,并且我得到了一个URL_CHANGED事件作为日志中的第三项。 1. GENERAL_REQUEST_START SiteId="1", AppPoolId="DefaultAppPool", ConnId="1610613013", RawConnId="0", RequestURL="http://example.com:80/test/wp-admin/", RequestVerb="GET" 15:35:54.176 2. GENERAL_SET_REQUEST_HEADER HeaderName="AspFilterSessionId", HeaderValue="", Replace="true" 15:35:54.192 3. URL_CHANGED OldUrl="/test/wp-admin/", NewUrl="/index.php/test/wp-admin/" 15:35:54.192 4. GENERAL_REQUEST_HEADERS […] 5. GENERAL_GET_URL_METADATA […] 6. URL_REWRITE_START […] 有人可以告诉我URL_CHANGED事件来自哪里,以及如何防止它? 更新:我们的服务器上的“默认文档”设置为“index.php”。 如果path没有指定正确的文件或文件夹,服务器是否会自动附加index.php到path? 我试图删除所有“默认文档”条目,但这并没有改变行为… Update2:我仍然在寻找这个问题的答案… 😉
我有一个PHP MySQL扩展版本5.0.77,而MySQL版本是5.1.34的服务器。 有些软件/脚本会警告我可能有问题。 我应该期望什么样的问题,我应该关心它吗? (我没有通过PHP运行任何奇妙的MySQL查询/命令)是大交易? 我们不觉得重新将PHP与更新版本的库重新组合,服务器pipe理员真的不知道如何(尽pipe我可能弄清楚)。
我们有在我们的networking服务器上设置的Posix ACL,一切工作正常,除了从Web浏览器上传文件,在这种情况下,默认ACL不适用。 任何原因为什么这可能会发生或build议?
我正尝试在我的VPS上安装memcache。 当我input $ pecl install memcache 我得到这个错误 checking whether the C compiler works… configure: error: cannot run C compiled programs. If you meant to cross compile, use `–host'. See `config.log' for more details. ERROR: `/root/tmp/pear/memcache/configure –enable-memcache-session=yes' failed 任何想法可能是什么问题?