Кто-нибудь сталкивался с этой странностью?
Я проверяю наличие нескольких каталогов в одном из моих модульных тестов. is_dir
сообщает true (1), несмотря на то, что папка не существовала на момент ее вызова. Код выглядит следующим образом (с несколькими посторонними промежуточными переменными для упрощения отладки):
foreach($userfolders as $uf) {
$uf = sprintf($uf, $user_id);
$uf = ltrim($uf,'/');
$path = trim($base . '/' . $uf);
$res = is_dir($path); //returns false except last time returns 1
$this->assertFalse($res, $path);
}
Машина под управлением Ubuntu Linux 8.04 с PHP версии 5.2.4-2ubuntu5.3
Вещи, которые я проверил:
- Paths are full paths
- The same thing happens on two separate machines (both running Ubuntu)
- I have stepped through line by line in a debugger
- Paths genuinely don't exist at the point where is_dir is called
- While the code is paused on this line, I can actually drop to a shell and run
интерактивный интерпретатор PHP и получить правильный результат
- Все пути ХОРОШИЕ под 256 символов
- Я не могу представить проблему с разрешениями, поскольку папка не существует! Родительская папка не может вызывать проблемы с разрешениями, так как другие папки в цикле правильно отображаются как отсутствующие.
Комментарии к документации по PHP указывают на странную проблему с is_dir
, но не на эту конкретную.
Я не публикую это как «пожалуйста, помогите мне исправить», но в надежде, что кто-то, столкнувшийся с тем же самым, сможет найти здесь и , надеюсь, ответ от кого-то еще, кто видел это! *