Я запускал 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"))
Пожалуйста, помогите мне разобраться в этой проблеме.