【问题标题】:fopen doesn´t work with something different than r phpfopen 不适用于与 r php 不同的东西
【发布时间】:2014-11-10 14:14:54
【问题描述】:

我的 fopen 函数和打开模式参数有问题。

代码

function writeOnFile($url, $text)
{
    $fp = fopen($url, "r");
    echo "<br>read: ".fgets($fp);
    //fwrite($fp, $text);
    fclose($fp);
}

如果我使用“r”作为打开模式,则回显线可以工作......但是如果我将这个参数更改为任何其他参数(使用相同的 url 文件),它就会停止工作并且只看到“read:”而没有其他内容。 我尝试使用“w+”“r+”“a+”......但没有人工作。
我要读取的是一个txt文件,我更改了文件的权限,现在是777 ...

我做错了什么?

【问题讨论】:

  • 如果你只想读/写,为什么要授予执行权限?

标签: php fopen


【解决方案1】:

鉴于您的变量命名,$url 建议您尝试写入 http://example.com/...。这是不可能的。你不能“写”到一个 url,因为 PHP 绝对 NO 知道远程服务器期望什么协议。例如。 PHP 奇迹般地决定让这个 URL 通过,并使用 http POST... 但服务器期待一个 http PUT。哎呀,这行不通。

同样,永远不要假设对外部资源的操作成功。始终假设失败,并将成功视为惊喜:

function writeOnFile($url, $text)
   if (!is_writeable($url)) {
      die("$url is not writeable");
   }
   $fp = fopen($url, "w");
   if (!$fp) {
      die("Unable to open $url for writing");
   }
   etc...
}

【讨论】:

  • 请原谅延迟... uuppps!我使用的是绝对 url,我不知道我不工作(但这是有道理的,但有人可以从其他服务器修改文件,或类似的东西)。非常感谢。
猜你喜欢
  • 2021-07-11
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
相关资源
最近更新 更多