【问题标题】:Problem with fwrite phpfwrite php的问题
【发布时间】:2011-05-10 21:57:56
【问题描述】:

我在 php 中使用 fwrite 时遇到问题。以下代码在我的本地计算机上运行,​​但在服务器中出现错误。

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if(!$fp) {
   echo 'Error: '.$errno.', '.$errstr;
} else {
   fwrite($fp, 'kool');
}

fsockopen 没有错误。它通过并且没有错误。 fwrite 无法写入。它失败并且不返回错误,只有 false

【问题讨论】:

  • 它给你的错误是什么?
  • fsockopen 中没有错误。它在 fwrite 中给出错误。和它的空白
  • 你确定 fwrite 会返回 FALSE 吗?... 向网络服务器写入 'kool' 无论如何都不应该工作。您可能还想检查 stream_get_meta_data 的返回值。
  • 它在您的本地机器上返回什么?
  • 在本地机器上工作正常。我得到了正确的结果。

标签: php fwrite fsockopen


【解决方案1】:

如果您在共享主机上,很可能您的服务器不允许端口 80 上的出站连接。通常只允许入站连接。

【讨论】:

  • 也许你是对的。我正在使用共享主机。那么对我来说有什么替代方案呢?
  • 如果您在一家较大的公司(BlueHost、Aplus、GoDaddy 等),您应该能够要求他们的技术支持为您打开出站端口 80。这是一个常见的请求,出于安全原因,他们只是默认将其关闭。
  • 这种方法有什么替代品吗?
  • 这真的取决于您要解决的问题。如果唯一的解决方案涉及在被阻止的端口上创建出站连接,并且您的主机不会为出站连接打开该端口,那么除了更改主机之外您无能为力。
【解决方案2】:

这是 Apache/Nobody 用户访问没有修改/读取/写入/执行权限的远程文件的权限问题。

您还应该打印错误消息以进行调试

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if(!$fp) {
    echo "Error No: ".$errno."<br />\n";
    echo "Error Str: ".$errstr."<br />\n";
} else {
    fwrite($fp, 'kool');
}

【讨论】:

  • fsockopen 中没有错误。它在 fwrite 中给出错误。和它的空白
猜你喜欢
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 2012-09-12
  • 1970-01-01
相关资源
最近更新 更多