php - Apache + PHP 中的 "End of script output before headers"

标签 php apache cgi file-permissions

更新: 此问题是由于脚本完成前服务器请求超时造成的。*

我有在共享 LAMP 主机 (nearlyfreespeech.net) 上运行的遗留代码,并且我最近添加了一个拒绝在生产环境中工作的新脚本。

我的 apache 错误日志显示消息 End of script output before headers: switch.php ,当我尝试使用网络客户端触发脚本时,我得到了 500 个状态。

根据其他 StackOverflow 帖子,此错误消息通常是由于文件权限错误引起的。但是,新脚本的文件权限与所有其他脚本相同。

这里是相关的文件权限:

-rw-rw-r--   1 235430  235430  1655 Jul  6 18:05 switch.php

drwxrwxr-x   2 235430  235430    18 Jul  1 21:05 auth/
-rw-rw-r--  1 235430  235430     13 Aug 24  2015 auth/.htaccess
-rw-rw-r--  1 235430  235430    280 Jul  1 21:05 auth/cloudsaves.2.php
-rw-rw-r--  1 235430  235430    880 Aug 28  2015 auth/cloudsaves.php
-rw-r--r--  1 235430  web     15580 Jul  1 21:05 auth/rumpus_migration.php

有了这些include()层次结构:

  • switch.php -> auth/cloudsaves.php (作品)
  • switch.php -> auth/cloudsaves.2.php <- auth/rumpus_migration.php (不起作用)

所有请求都是针对 switch.php 并包含导致 auth/cloudsaves.php 的参数值或 auth/cloudsaves.2.php被包括在内。

在我的本地测试环境中,一切正常。在生产中,当我使用导致 switch.php 的参数时包括 cloudsaves.2.php脚本我得到错误。

我试过更改 rumpus_migration.php 上的组和权限和 cloudsaves.2.php与父级正确包含的其他文件完全匹配switch.php脚本,始终具有相同的结果。这个新脚本 ( cloudsaves.2.php ) 是 switch.php 包含的唯一脚本那本身includes另一个脚本。

我不熟悉 Apache 或 PHP,生产代码位于共享主机上,我在该主机上的管理员访问权限极其有限。该代码在本地运行但不在生产环境中运行这一事实使得权限问题似乎是一个可能的罪魁祸首,但我不知道如何继续前进,因为似乎没有任何工作权限选项可以解决它。

最佳答案

问题是由于长时间运行的数据库查询,请求在脚本完成之前超时。

所以一般的End of script output before headers错误可能是由服务器超时和文件权限问题引起的。

关于php - Apache + PHP 中的 "End of script output before headers",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62762559/

相关文章:

javascript - 如何保持 Google API 处于事件状态而不必每次都登录?

javascript - 使用 PHP 制作 Javascript 数组

SVN errorcode=2 无法打开请求的 SVN 文件系统

linux - 如何配置 Apache 2 以运行 Perl CGI 脚本?

php - try/catch block 中未捕获异常

php - laravel - Blade 模板布局结构为每 4 个跨度添加 row-fluid

regex - PowerShell:在两个单词之间查找文本

asp.net - 我可以在 apache 服务器上托管 ASP.NET 吗?

jquery - Datatables jQuery $(document).ready 不工作并被数字取代

python - 将 CGI python 脚本附加到 PyCharm 调试器?