为什么我得到一个POST错误403的PHP脚本?

背景

问题

  • 当我发送崩溃报告,在cocoa方面,它报告已成功发送,但我没有收到电子邮件。

  • 该代码已被用于其他许多良好的cocoa项目,并在几个月前为我工作。

  • 这导致我得出这样的结论:问题与我的Web服务器设置有关,这是我几乎不知道的。

  • 当我看着我的日志文件,我看到这样的条目:

    IP Redacted – – [10 / Jun / 2010:09:47:53 +0100]“POST /crashreportform.php HTTP / 1.1”403 74“ – ”“UKCrashReporter”

我试过了

  1. 我试图通过浏览器访问http://synapticmishap.co.uk/crashreportform.php页面。 它加载罚款。

  2. 我已经确定在这个PHP脚本的权限设置,以便任何人都可以执行它。

  3. 我已经尝试删除从根开始的不同级别的.htaccess部分中的拒绝条目。

  4. 我已经下载了Firefox的URLParams插件,允许你模拟POST。 我把上面的URL放在一个post里,用“crashlog”作为参数,“test”作为值。 这在我的日志文件中生成了一个200条日志条目 – 虽然没有发送邮件,但它似乎可以工作。

我有以下http://synapticmishap.co.uk/crashreportform.php 。 我已经简化它到只是裸露的骨头,以努力使其工作。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Crash Report</title> </head> <body> <p>This page contains super special magic which submits a crash report item to me.</p> <p>Nothing to see here - move along.</p> <?php mail( "[email protected]", "Crash Report", "\r\n\r\nThis is a test."); ?> </body> </html> 

这是我顶级的.htaccess文件:

 RewriteEngine on # -FrontPage- IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti* <Limit GET POST> order deny,allow deny from all allow from all </Limit> <Limit PUT DELETE> order deny,allow deny from all </Limit> Options All -Indexes RewriteCond %{HTTP_HOST} ^synapticmishap.co.uk$ [OR] RewriteCond %{HTTP_HOST} ^www.synapticmishap.co.uk$ RewriteCond %{HTTP_HOST} ^lapsusapp.co.uk$ [OR] RewriteCond %{HTTP_HOST} ^www.lapsusapp.co.uk$ RewriteRule ^/?$ "http\:\/\/synapticmishap\.co\.uk\/synapticmishap\/lapsuspromo\/" [R=301,L] RewriteCond %{HTTP_HOST} ^jgtutoring.co.uk$ [OR] RewriteCond %{HTTP_HOST} ^www.jgtutoring.co.uk$ RewriteRule ^/?$ "http\:\/\/synapticmishap\.co\.uk\/tutoring" [R=301,L] RewriteCond %{HTTP_HOST} ^synapticmishap.co.uk$ [OR] RewriteCond %{HTTP_HOST} ^www.synapticmishap.co.uk$ RewriteRule ^/?$ "http\:\/\/synapticmishap\.co\.uk\/synapticmishap" [R=301,L] RewriteCond %{HTTP_HOST} ^jgediting.co.uk$ [OR] RewriteCond %{HTTP_HOST} ^www.jgediting.co.uk$ RewriteRule ^/?$ "http\:\/\/synapticmishap\.co\.uk\/editing" [R=301,L] RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://synapticmishap.co.uk/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://synapticmishap.co.uk$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.synapticmishap.co.uk/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.synapticmishap.co.uk$ [NC] RewriteCond %{HTTP_REFERER} !^http://synapticmishap.co.uk/synapticmishap/crashreportform.php/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://synapticmishap.co.uk/synapticmishap/crashreportform.php$ [NC] RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC] 

error_log文件似乎没有任何相关的错误。 最后几项是:

 [24-May-2010 03:20:21] WordPress database error MySQL server has gone away for query SELECT FOUND_ROWS() made by require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts [08-Jun-2010 15:50:04] WordPress database error Duplicate entry '257-1' for key 1 for query INSERT INTO `wp_term_relationships` (`object_id`,`term_taxonomy_id`) VALUES ('257','1') made by wp_xmlrpc_server->wp_xmlrpc_server, IXR_Server->IXR_Server, IXR_Server->serve, IXR_Server->call, wp_xmlrpc_server->mw_editPost, wp_update_post, wp_insert_post, wp_set_post_categories, wp_set_object_terms 

帮帮我!

我在这个系列的最后,我正处在一个非常陌生的空间,所有的这些东西。 我会非常感激人们为什么这不起作用的想法。 谢谢。

更新1

今天早上我寄出的几封testing邮件现在已经过去 – 4个小时后。 鉴于电子邮件服务器与我正在发布的邮箱位于同一个框中,这听起来不对。 再加上错误仍然被logging。 我刚刚发送了几封带有崩溃日志的testing邮件。 我会看到,如果这些后来在一天后回来。

更新2

崩溃日志的电子邮件从未到达。 我已经达到了我可以尝试的路线的尽头,而不是无休止的日子,这是我没有的时间。 我用绝望的手段向我的虚拟主机提供商提交了一张支持票,以便得到某种解决办法。 这是我现在唯一可以想到的 – 他们正在停止某些types的POST。 由于我删除了文件中的所有PHP代码,并且仍然生成错误,所以我认为这是关于我的POST格式或服务器不喜欢的头文件,而不是脚本中的PHP。 欢迎任何其他想法。

你的崩溃转储有多大? PHP有内存限制,可能需要调整,所以你的脚本可以工作。 内存限制必须足够大,才能执行脚本+任何上传的数据。

在与我的托pipe服务提供商来回发送电子邮件之后,事实certificate这里出现了很多问题。

  1. 各种各样的安全设置都是不正确的
  2. 我不知道,我必须设置文件的权限是644,否则他们不会执行

另外我相信还有更多其他的东西,他们没有详细介绍。

概要? 问题确实在主机端,这是我不能做任何事情或不知道的东西。