Articles of PHP

PHP的input过滤,不必要的斜杠得到和后参数

我怎样才能禁用input过滤? 这里是一个例子: echo "\$_GET: "; var_dump($_GET); echo "filter.default: "; var_dump(ini_get('filter.default')); echo "filter.default_flags: "; var_dump(ini_get('filter.default_flags')); echo "\nCurrent PHP version: " . phpversion() . "\n"; 当我用这个URLtesting它时: http://example.org/?text=<a href="http://example.org">…</a> : http://example.org/?text=<a href="http://example.org">…</a>代码生成这个: $_GET: array(1) { ["text"]=> string(38) "<a href=\"http://example.org\">…</a>" } filter.default: string(1) "0" filter.default_flags: bool(false) Current PHP version: 5.2.10-2ubuntu6.7 服务器信息: System Linux magentob.builder.hu 2.6.31-14-server #48-Ubuntu SMP Fri Oct […]

100%的SSD使用Linux

每20-30秒我的硬盘使用率达到100%(iostat)。 iotop显示[flush-8:0]在这段时间内正在使用99%的硬盘。 在HDD之间的使用率是1-10%。 iostat输出: 04/22/2013 08:58:44 AM 设备:rrqm / s wrqm / sr / sw / s rmb / s wmb / s avgrq-sz avgqu-sz await svctm%util sda 1.55 1188.88 3.43 569.93 0.03 6.88 24.69 0.25 0.43 0.12 7.15 04/22/2013 08:58:46 AM 设备:rrqm / s wrqm / sr / sw / s rmb / s […]

WordPress的网站工作几分钟,然后网站失败,数百名“无法分配内存池”的错误

我正在迁移一台机器,并已经移动了几个最小stream量的WordPress网站(最大的网站每天获得约200个独特的用户)。 一切似乎工作正常,但稍后我再次加载它并在浏览器中得到“没有数据收到”。 打开PHP警告/错误消息然后,我看到数以百计的“无法为池分配内存”消息。 如果我重新启动Apache,站点再次运行一段时间,然后再次停止。 有几件事对我没有意义: Apache重启解决了这个问题 在其他网站的问题期间,同一服务器上的另一个WordPress网站继续正常工作 目前的php.ini有更多的内存分配比旧的(我移动了一些变化,但留下的内存在默认情况下,128 MB或东西,在旧的服务器上是16 MB) 在寻求帮助时,我看到了对APC的引用,但是我没有看到在这里使用APC的证据 我试过禁用所有的插件,但没有改变。 作为背景,这个迁移是Apache版本的1.x到2.x版本的变化,但在PHP版本中只是一个相对较小的版本。 我现在不知道该怎么做。 请帮助? Quinxy 这是我的PHP.ini,如果有帮助(评论剥离适合职位长度): [PHP] engine = On short_open_tag = On asp_tags = Off precision = 14 y2k_compliance = On output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = 100 allow_call_time_pass_reference = On safe_mode = Off safe_mode_gid = […]

限制CURLOPT_INTERFACE的IPselect

我有一个服务器,通过cPanel添加6个IP地址。 我遇到了麻烦,限制了我的客户端可以在他们的PHP脚本中用作外出IP地址的IP地址。 其中一些正在运行代理并使用CURLOPT_INTERFACE从服务器IP地址切换到其他客户端的IP地址。 我不知道如何限制CURLOPT_INTERFACE只是服务器的IP地址或绑定到服务器+客户端的专用IP地址…

用于防止SQL注入的dynamic列枚举

我有一个完全供内部使用的应用程序,但是我试图确保我的SQL基础覆盖了SQL注入。 除非有其他人有一些信息指向我,否则没有办法dynamic地指定列表中的列列表,而无需打开SQL注入的查询,因为准备好的语句bindparam不能用于指定列名称。 例如(不可能的,会抛出错误): SELECT :column_name FROM tablename WHERE other_column_name = :value 为了仍然dynamic允许调用列名,我直接必须传入一个variables(工作,但易受注入): SELECT $column_name FROM tablename WHERE other_column_name = :value 为了防止注入,我使用PHP的in_array函数针对表中所有列名的白名单检查$ column_name的值。 如果它在列表中,我继续查询,但如果不是,我会抛出一个exception。 由于在应用程序中有许多不同的地方需要这样的查询,所以我添加了一个函数给我的PDO包装器,以便使用information_schema数据库中的数据自动枚举这些列列表: public function schema_list($database_name = NULL, $table_name = NULL, $column_name = NULL) { $query = 'SELECT table_schema AS database_name, table_name, column_name FROM `information_schema`.`columns` WHERE table_schema = :database_name '; $parameters = array(); // […]

ps x显示奇怪的命令:-f html / index.php

只是去检查我的网站之一,并被消息迎接:“CGIWrap错误:真正的UID不能改变!”。 通过SSH进来,并试图“PS X”这显示了吨只是“-f”和pathindex.php或一些其他的PHP文件的过程吨。 杀死所有进程后,一切恢复正常。 任何人都知道那是什么? Google根本没有帮助。

与.htaccess中的3个不同的RewriteRules冲突?

我在我的.htaccess文件中使用下面的。 有3种types的redirect: redirect到目录/admin/index.php redirect到特定的.php文件,例如/ about redirect到/ John的用户个人资料页面 所有3个工作在我的本地环境,但在服务器上只有1和3的作品。 我真的很感激,如果你能告诉我为什么URLredirecttypes“/约”不适合我。 非常感谢。 <IfModule mod_rewrite.c> Options -Multiviews Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^admin$ /admin/index.php [QSA,L] RewriteRule ^about/?$ /about.php [NC,L] RewriteRule ^es/?$ /index.php?lang=2 [NC,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([_A-Z0-9a-z-+\.]+)/?$ /public_profile.php?id=$1 [L] </IfModule> ErrorDocument 404 /404.php

如何在“维护模式”下使用nginx提供HTML和JSON?

我有一个PHP的Web应用程序的nginxconfiguration,我想使它有一个额外的目的,我似乎无法find一个办法来实现它。 我目前的nginxconfiguration如下: 将/ /intro/*重写为非PHPdynamic“市场营销”网站的静态HTML页面 尝试加载/maintenance.html如果存在于磁盘上,只在部署期间存在) 如果/maintenance.html不存在,请通过FastCGI向PHP发送请求 最终结果是在部署过程中静态页面保持可用,后端PHP应用程序可以在部署发生时进行维护。 serverconfiguration块的重要部分如下所示: rewrite ^/$ /marketing/index.html last; rewrite ^/intro/(.*)$ /marketing/$1.html last; try_files $uri /maintenance.html @webapp; location @webapp { rewrite ^(.*)$ /index.php?url=$1 last; } include php.conf; ( php.confconfiguration处理location ~ \.php$位置,并执行所有通常的fastcgi_param设置。没有任何项目特定的,所以我没有发布该块。) 除了上述之外,我希望能够做的是当“维护模式”打开时,为标准HTTP请求提供/maintenance.html ,但在处理AJAX请求时响应一些JSON。 我发现我可以安全地返回基本内容: if ($http_x_requested_with = XMLHttpRequest) { return 503 '{"maintenance":true}'; } 但是,这显然发生在所有请求上,而不仅仅是/maintenance.html被提供的那些请求。 看来我需要一些标志,因为try_files不允许你做额外的事情取决于它select的文件或位置。 有什么办法可以将nginxconfiguration为返回HTML和JSON维护模式的详细信息? 编辑:更多的思考,也许将maintenance.html完全移出try_files将是很好的,所以它可以用503状态而不是200来提供。

PHP的SSI与NGINX

我有一个非常古老的网站,我想尝试在NGINX而不是Apache上运行。 这个网站包含许多带有零星PHP SSI的平面HTML文件,比如: <!–#include virtual="/some_file.php" –> NGINX HttpSsiModule在dynamic时如何处理这些问题? 在模块文档中,它说: The distinction between "file" and "virtual" is mostly historical. "file" is the same as "virtual" with implied "wait" option. 这并不涉及我应该如何configurationPHP执行。 使用上面的#include ,这意味着我应该设置一个匹配/some_file.php的location ,并且configuration为fastcgi到php-fpm(或其他类似的东西)?

如何解决Apache2错误“(32)损坏的pipe道:core_output_filter:写入数据到networking”

我们公司的WordPress的index.php文件(3.5.1,每天一个handfull访客)博客反应非常跛脚每个请求。 一分钟后出现。 这种行为是出于蓝色,对系统做出的改变没有改变。 看着apache 2 error.log文件,我发现以下内容: (32) Broken pipe: core_output_filter: writing data to the network 在互联网上search我发现已经有一个可能的解决scheme的问题。 有人提到,这将有助于补充 EnableSendfile Off 到httpd.conf,但没有任何变化。