2017-05-18 12 views
0

最近私のマシンのOSをWindowsからLinuxに変更しましたが、PHPアプリケーションでは新しいマシン内でopendir()関数が実行されていないようです。以下は私のコードです:PHP OpenDir関数が私のUbuntu Linuxマシンで動作しない

public function scandirs($dir){ 

    $listDir = array(); 

    if($handler = @opendir($dir)) { 

     while (($sub = readdir($handler)) !== FALSE) { 

      if ($sub != "." && $sub != ".." && $sub != "Thumb.db") { 

       if(is_file($dir."/".$sub)) { 

        $listDir[] = $dir.'\\'.$sub; 
       } 
       elseif(is_dir($dir."/".$sub)){ 

        $listDir[$sub] = scandirs($dir."\\".$sub); 
       } 
      } 
     } 

     closedir($handler); 
    } 

    return $listDir; 
} 

私はvar_dump(opendir($dir));を実行した場合、それだけで偽を返します。私はLinuxのターミナルからファイルを実行していることを追加する必要があり

EDIT

+0

変数 '$ dir'の内容は何ですか? – axiac

+0

アドレスは/ var/www/html/esurance365/app/sys/project –

+0

です。コマンドライン(ターミナル)からスクリプトを実行すると、あなたの権限で実行されます。ターミナルの 'ls/var/www/html/esurance365/app/sys/project'の出力は何ですか? 'project'はディレクトリですか?最初の引数がディレクトリでない(またはそれを開くことができない)場合、['opendir()'](http://php.net/manual/en/function.opendir.php)は失敗します。 [エラー抑制演算子( '@')](http://php.net/manual/en/language.operators.errorcontrol.php)を削除し、なぜ失敗するのかを表示させます。 – axiac

答えて

0

ディレクトリの許可問題です。開くしようとしているディレクトリのアクセス許可を確認してください。 私たちがphpアプリケーションをWindows環境からLinux環境に切り替えるときに、ファイルのアクセス権とファイルパスが私たちが直面する2つの共通の問題です。

+0

ファイルのアクセス権は、完全な読み取り、書き込み、および実行のアクセス許可です。 –

+0

ブラウザまたはcronでスクリプトを実行していますか? – Vishal

+0

いいえ、Linux端末から –

関連する問題