【问题标题】:Open folder without PHP warnings打开没有 PHP 警告的文件夹
【发布时间】:2014-09-18 19:39:34
【问题描述】:

如果文件夹无法访问,opendir() 会给我一个 PHP 警告。

我可以使用 is_dir 但如果同时删除文件夹怎么办:

  if(is_dir($some_dir)){
    // HERE, DELETED, GONE :(
    $d = opendir($some_dir);
    // warning !!0
  }

那个警告弄乱了我的整个错误处理代码。

有什么方法可以在不收到警告的情况下进行文件操作? FALSE 结果足以理解该文件不可访问,我不明白为什么它也必须警告我:(

请不要告诉我使用@。必须有更好的方法

【问题讨论】:

标签: php file file-io error-handling directory


【解决方案1】:
$d = @opendir($some_dir);

@ 在函数静默之前,该函数可能引发错误。

然后你可以测试$d 看看它是否有效(如果无效则为假)。

哦,对了,谢谢 cmets,OP 提到不要告诉 @ 我的坏事。

然后另一种可能性是更改您的 php 配置,以便 php 不会发出警告。

【讨论】:

  • 糟糕的编程实践,并在问题中特别提到不要给出这个建议。
  • 你有什么建议@MikeBrant?
【解决方案2】:

通过检查是否首先设置了该变量来尝试以下操作。

if(isset($some_dir)):
  if(is_dir($some_dir)):
    // HERE, DELETED, GONE :(
    $d = opendir($some_dir);
    // warning !!0
  endif;
endif;

【讨论】:

    【解决方案3】:

    试试这个代码

      if(is_dir($some_dir)){
        // HERE, DELETED, GONE
        $d = @opendir($some_dir);
        // warning
      }
    

    如果您不想使用“@”,则必须检查/确认 $some_dir 上的目录路径是否正确

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多