PHP-функция is_dir странное поведение - PullRequest
0 голосов
/ 24 октября 2019

Я запускал PHP-код на сервере Linux. Я заметил, что мой php-код выходит из строя в тот момент, когда я использую функцию is_dir(). Функция is_dir() возвращает false, даже если каталог присутствует на сервере. Разрешение, владение выглядит нормально. Я стал немного подозрительным с этим и попробовал тот же самый подход, используя python, используя эквивалентные функции на языке python (оба кода php и python показаны ниже). Python-код работает нормально и дает мне результат, как и ожидалось.

При дальнейшей отладке я заметил, что подкаталоги, созданные в его родительском каталоге, ведут себя странно. Значения inode этих каталогов испорчены.

386999     drwxrwsr-x 2 guiuser guiuser    6 Oct 24 03:04 temp

4451771015 drwxrwsr-x 2 guiuser guiuser    6 Oct 24 03:08 temp_1

Когда я запускаю код php, функция is_dir() возвращает true для temp и false для temp_1. Но код Python возвращает true для обоих. Странно, правда?

По какой-то причине функция is_dir() не срабатывает, когда значение inode большое.

Примечание: я использую php5. Нет зависимости от Apache или другого веб-сервера. Я запускаю его как исполняемый файл. Также temp и temp_1 создаются в каталоге в точке монтирования, которая имеет тип xfs.

Код PHP:

#!/usr/bin/php
<?php
  class test
  {
   public function __construct()
   {
   }
   public function check()
   {    
      $DirM = "/path/to/folder";    
      if (!is_dir ($DirM))
      {
    print $DirM . " Not a directory\n";
        return;
      }
      print $DirM . " is a directory\n";
   }
  }    
  $test1 = new test();
  $test1->check(); 
?>

Код Python:

import os
print(os.path.isdir("/path/to/folder"))

Пожалуйста, помогите мне разобраться в этой проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...