BoyLee 2011-04-02 10:43:05 3003次浏览 8条回复 0 0 0

if ($fp = fopen($fPath, 'w')){

这行代码为读取,我在后面加上了测试如果读不到就不使用缓存机制。。。

但是当我将$fPath设置为不允许读取的情况下,无论怎么加@符号都无法成功抑错。

if ($fp = @fopen($fPath, 'w')){

if (@$fp = fopen($fPath, 'w')){

都会提示 对目录没有权限。。。。舰长。。。。

  • 回复于 2011-04-02 10:44 举报

    if ($fp = fopen(@$fPath, 'w')){
    这样可以吗?

  • 回复于 2011-04-02 10:50 举报

    一样没有 换方法了,这个东西貌似。。。不好弄。

  • 回复于 2011-04-02 10:58 举报

    看样子只能换个方法了!

  • 回复于 2011-04-02 10:59 举报

    最后这样解决的。

    if (@is_writable($fPath))
      if ($fp = fopen($fPath, 'w')){
        fwrite($fp, $str);
          fclose($fp);
    }
    

    主要是想上了缓存以后,遇到特殊情况,能再灵活点。如果不能写就直接不用缓存。至少保证能使用。

  • 回复于 2011-04-02 11:00 举报

    想法不错啊!

  • 回复于 2011-04-02 11:07 举报

    正确的是这样的,上面的有个bug

    preg_match('|/.*/|', $fPath, $out);
    //echo '<pre>';
    //print_r($out);
    //echo '</pre>';
    if (@is_writable($out[0]))
      if ($fp = fopen($fPath, 'w')){
        fwrite($fp, $str);
          fclose($fp);
    }
    
  • 回复于 2011-04-02 11:07 举报

    呵呵 分享一下。

  • 回复于 2011-04-02 13:58 举报

    不错,顶个!~

您需要登录后才可以回复。登录 | 立即注册