PHP: file_get_contents(): 无法打开流错误 - 适用于测试 XAMPP 测试服务器,未上线
PHP: file_get_contents(): failed to open stream error - works on test XAMPP test server, not live
我正在为电影院创建一个 PHP 应用程序,当用户访问该应用程序时,它会获取外部 XML 文档,并将其保存到我们的服务器。该 XML 文件随后用于加载放映时间和其他电影信息。如果我们服务器上的文件早于 15 分钟,它将被覆盖,否则,它将加载现有文件。我已经差不多完成了应用程序,它在我的 XAMPP 测试服务器上运行完美,但它无法在实时服务器上运行。
外部 XML 文件位于此 URL:http://45502.formovietickets.com:2235/showtimes.xml。我试图将文件保存到的服务器位于 HostGator 的一个基于 Linux 的服务器上。使用 PHP 的 curl 函数,我已经能够仅在 XAMPP 测试服务器上成功加载 XML 文件。在实时服务器上,它根本无法连接。
我觉得这可能是对 formovietickets.com 服务器的某种访问限制,但它背后的人坚持认为没有任何限制。有谁知道解决此问题的方法?
<?php
$url = 'http://45502.formovietickets.com:2235/showtimes.xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(curl_exec($ch) === false) {
echo 'Curl error: '.curl_error($ch);
} else {
echo 'Retrieved file with no errors!';
}
curl_close($ch);
?>
我测试了什么?
- 我已经尝试将 php.ini 文件从 XAMPP 传输到实时服务器,但仍然失败。
- 我能够成功检索位于另一台外部服务器上的 XML 文件。
- 我已经在基于 Windows 的服务器上测试了代码,但问题仍然存在。
注意:如果您在不到 15 分钟的时间内从同一 IP 地址多次加载 URL,您将收到一条错误消息“来自该 IP 地址的请求过多”。只是说以防万一你尝试测试一下。
您是否检查了 /etc/hosts 文件,在 Windows 上它位于 C:\Windows\System32\Drivers\etc\hosts,它可能导致 formovietickets.com 解析到不同的 IP,并且它优先于DNS服务器,说到这里,换个DNS服务器试试
我的猜测是您的托管商在其防火墙中阻止了对非标准端口(如 2235)的出站访问。如果是这样,你应该要求他们打开那个端口,并希望他们愿意这样做。如果不是,那么您将不得不想出另一种解决方案来获取服务器上的文件,例如使用代理或将文件推送到服务器而不是获取它。
我正在为电影院创建一个 PHP 应用程序,当用户访问该应用程序时,它会获取外部 XML 文档,并将其保存到我们的服务器。该 XML 文件随后用于加载放映时间和其他电影信息。如果我们服务器上的文件早于 15 分钟,它将被覆盖,否则,它将加载现有文件。我已经差不多完成了应用程序,它在我的 XAMPP 测试服务器上运行完美,但它无法在实时服务器上运行。
外部 XML 文件位于此 URL:http://45502.formovietickets.com:2235/showtimes.xml。我试图将文件保存到的服务器位于 HostGator 的一个基于 Linux 的服务器上。使用 PHP 的 curl 函数,我已经能够仅在 XAMPP 测试服务器上成功加载 XML 文件。在实时服务器上,它根本无法连接。
我觉得这可能是对 formovietickets.com 服务器的某种访问限制,但它背后的人坚持认为没有任何限制。有谁知道解决此问题的方法?
<?php
$url = 'http://45502.formovietickets.com:2235/showtimes.xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(curl_exec($ch) === false) {
echo 'Curl error: '.curl_error($ch);
} else {
echo 'Retrieved file with no errors!';
}
curl_close($ch);
?>
我测试了什么?
- 我已经尝试将 php.ini 文件从 XAMPP 传输到实时服务器,但仍然失败。
- 我能够成功检索位于另一台外部服务器上的 XML 文件。
- 我已经在基于 Windows 的服务器上测试了代码,但问题仍然存在。
注意:如果您在不到 15 分钟的时间内从同一 IP 地址多次加载 URL,您将收到一条错误消息“来自该 IP 地址的请求过多”。只是说以防万一你尝试测试一下。
您是否检查了 /etc/hosts 文件,在 Windows 上它位于 C:\Windows\System32\Drivers\etc\hosts,它可能导致 formovietickets.com 解析到不同的 IP,并且它优先于DNS服务器,说到这里,换个DNS服务器试试
我的猜测是您的托管商在其防火墙中阻止了对非标准端口(如 2235)的出站访问。如果是这样,你应该要求他们打开那个端口,并希望他们愿意这样做。如果不是,那么您将不得不想出另一种解决方案来获取服务器上的文件,例如使用代理或将文件推送到服务器而不是获取它。