2013-03-21 9 views
0

я разработал следующий PHP-код, чтобы прочитать определенную директорию под названием /dados/capture:PHP READDIR, Глобы и Exec («LS») возвращает в пустом массиве для некоторых каталогов под Apache

tst2.php

<html> 
<body> 
<?php 
echo "whoami: " . shell_exec('whoami')."<br>\n"; 
exec('ls /dados/capture/',$base); 
echo "/dados/capture content ...<br>\n"; 
foreach ($base as $dir) 
{ 
    print $dir ."<br>\n"; 
} 
?> 

Выполнение кода через командную строку Linux "[корень $ MySite] # Судо -u апач PHP tst2.php" возвращает следующее:

<html> 
<body> 
whoami: apache 
<br> 
/dados/capture content ...<br> 
120130312115149.jpg<br> 
120130312115149.swf<br> 
120130312115658.jpg<br> 
120130312115658.swf<br> 
</body> 
</html> 

Вызов tst2.php из веб-браузера приводит:

whoami: apache 
/dados/capture content ... 

Я попытался изменить разрешение на папку (ы) и создания директивы <directory><directory> в httpd.conf, без каких-либо изменений в результате.

Я проверил код с другим справочником, это было неожиданностью, потому что он также не работает для /boot, /mnt и /opt каталогов.

Использование glob или readdir результат тот же, но потребляет намного больше процессора.

Я использую CentOs 2.6.32-279.22.1.el6.i686, Apache/2.2.15 и PHP 5.4.12.

У кого-то была аналогичная проблема?

+0

если вы могли бы разместить свой код в кодовых блоках, пожалуйста. для использования кодового блока оставить 4 пробела – Nikitas

+1

Кажется, проблема с разрешениями. В командной строке вы запускаете скрипт как root. Возможно, у пользователя сервера Apache недостаточно прав, чтобы перечислить папку – Ateszki

ответ

0

Пробег:
$ out = shell_exec ('ls/dir/path 2> & 1'); Пользователь, просматривающий Интернет, может не иметь разрешения. Итак, вы, , можете получить эту ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^