【问题标题】:Curl and wget return error 500 for helloworld.php on new install but browser is fineCurl 和 wget 在新安装时为 helloworld.php 返回错误 500,但浏览器很好
【发布时间】:2017-03-17 04:15:50
【问题描述】:

我没有 .htaccess 文件。我有 index.php,它具有以下内容,并且在 Chrome 或 Safari 等浏览器中运行良好:

<?php print "hello world"; ?>

当我在浏览器中加载它时,我得到:hello world。 当我尝试以下任何一项时,我都会收到 ERROR 500: Internal Server Error。

我检查了所有 apache 日志文件,除了在网络浏览器中加载它之外,什么也看不到。

这是 Ubuntu 16.04 php7.0 Apache2。截至 2016 年 11 月 3 日,所有新安装和更新的最新版本

我尝试重新安装 wget。我从其他机器和本地机器上尝试了 wget。

我尝试将 varnish 放在 80 端口上,将 apache 放在 8080 端口上,放在 varnish 后面……但这并没有改变任何东西。

Wget 通过调试输出以下内容:

root@one:~# wget --debug http://example.com/index.php
DEBUG output created by Wget 1.17.1 on linux-gnu.

Reading HSTS entries from /root/.wget-hsts
URI encoding = ‘UTF-8’
--2016-11-03 07:51:27--  http://example.com/index.php
Resolving example.com (example.com)... 207.158.37.70
Caching example.com =207.158.37.70
Connecting to example.com (example.com)|207.158.37.70|:80... connected.
Created socket 3.
Releasing 0x0000561eeda0d190 (new refcount 1).

---request begin---
GET /index.php HTTP/1.1
User-Agent: Wget/1.17.1 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: example.com
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response... 
---response begin---
HTTP/1.1 500 Internal Server Error
Server: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.20 OpenSSL/1.0.1f mod_perl/2.0.8 Perl/v5.18.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 538
Accept-Ranges: bytes
Date: Thu, 03 Nov 2016 14:49:42 GMT
X-Varnish: 2177415129
Age: 0
Via: 1.1 varnish
Connection: keep-alive

---response end---
500 Internal Server Error
Registered socket 3 for persistent reuse.
URI content encoding = ‘iso-8859-1’
Skipping 538 bytes of body: [<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 voztechnologies@gmail.com to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server erroSkipping 26 bytes of body: [r log.</p>
</body></html>
] done.
2016-11-03 07:51:27 ERROR 500: Internal Server Error.

Saving HSTS entries to /root/.wget-hsts
root@one:~# 

【问题讨论】:

  • 请与 --debug 分享您的 wget 命令的完整输出
  • 用 --debug 的响应更新了问题
  • apache/php 错误日志中一定有东西
  • 您是否也在浏览器中使用 URL example.com/index.php 打开文件?
  • 是的,我用example.com/index.php在浏览器中打开它,它可以正常工作

标签: php apache .htaccess curl wget


【解决方案1】:

您的 apache 可能不接受来自 curl 或 wget 的任何用户代理。这可以从httpd.conf 文件中配置(或者可能是其他地方,没有太多经验)。

如果您将浏览器的用户代理与 wget 或 curl 一起使用,它应该可以与您一起使用。例如:

wget -U "Opera 11.0" http://www.test.com/
curl -A "Opera 11.0" http://www.test.com/

【讨论】:

  • 我尝试在 curl 和 wget 上将用户代理更改为大约 3 种不同的浏览器。默认情况下,Apache 在新安装时不会这样做。
  • 使用 mozila 的 firebug 查看从浏览器发送的请求标头是什么(您也可以使用 chrome 右键单击​​ -> 然后选择检查)。尝试使用您的 curl 或 wget 准确添加这些内容。如果有效,则将它们一一删除,看看哪个失败了。
【解决方案2】:

我注意到服务器上的另一个域名有效。所以,我复制了虚拟主机,重新加载了 apache,但它仍然无法正常工作。我把一切都说得很清楚。最后我看到 DNS 指向了我的开发服务器,它没有监听我的域名并返回错误 500。

更新了 DNS,节目又开始了。感谢您帮助我完成有想法的事情!

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 2012-07-11
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多