2017-05-18 6 views
0

Récemment, j'ai changé le système d'exploitation de ma machine de Windows vers Linux mais maintenant mon application PHP ne semble pas exécuter la fonction opendir() dans la nouvelle machine. Ci-dessous mon code:La fonction PHP OpenDir ne fonctionne pas sur ma machine Linux Ubuntu

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; 
} 

Si je joue un var_dump(opendir($dir)); il retourne juste un faux.

EDIT

Je dois ajouter que je courais les fichiers du terminal Linux.

+0

Quel est le contenu de la variable '$ dir'? – axiac

+0

l'adresse est/var/www/html/esurance365/app/sys/projet –

+0

Si vous exécutez le script à partir de la ligne de commande (Terminal), il est exécuté avec vos autorisations. Quelle est la sortie de 'ls/var/www/html/esurance365/app/sys/project' dans le terminal? Est-ce que 'project' est un répertoire? ['opendir()'] (http://php.net/manual/fr/function.opendir.php) échoue si son premier argument n'est pas un répertoire (ou s'il n'est pas autorisé à l'ouvrir). Supprimez l'opérateur de suppression d'erreurs ('@')] (http://php.net/manual/fr/language.operators.errorcontrol.php) et laissez-le afficher pourquoi il échoue. – axiac

Répondre

0

Il peut être problème de répertoire. Vérifiez la permission du répertoire que vous essayez d'ouvrir. L'autorisation de fichier et le chemin d'accès au fichier sont deux problèmes courants auxquels nous sommes confrontés lorsque nous passons de l'application Windows à l'environnement Linux.

+0

Les autorisations de fichier concernent les autorisations de lecture, d'écriture et d'exécution complètes –

+0

Vous exécutez le script via le navigateur ou via cron? – Vishal

+0

Non via le terminal Linux –