Подземный стук, 5.5 баллов.Имеется FedoraCore9, на ней апач и пхп. Апач работает под пользователем apache, у пхп выключены всякие safe_mode, open_basedir'ы. Есть директория '/somewhere/dir' с владельцем apache:apache и правами 0777. Далее 2 действия:
1) апач выполняет пхп-скрипт, который делает touch('/somewhere/dir/file1');
2) я из шелла под пользователем apache делаю touch /somewhere/dir/file2 (или php -r "touch('/somewhere/dir/file2');", эффект тот же.
3) ls -l /somewhere/dir
-rw-r--r-- 1 apache apache 0 2010-01-01 01:01 file1
-rw-r--r-- 1 apache apache 0 2010-01-01 01:02 file2
4) пробую повторно из апача с пом. пхп-скрипта touch('/somewhere/dir/file1') - проходит
5) пробую из апача с пом. пхп-скрипта touch('/somewhere/dir/file2') - время модификации не изменилось, выдается ошибка:
PHP Warning: touch() [<a href='function.touch'>function.touch</a>]: Utime failed: Permission denied
6) из шелла под пользователем apache touch /somewhere/dir/file1, touch /somewhere/dir/file2, php -r "touch('/somewhere/dir/file1');", php -r "touch('/somewhere/dir/file2');"
срабатывают, как и ожидалось.
Это упрощенное описание проблемы, глобально пхп под httpd не в состоянии писать в файлы, которые сам не создал (хоть ему выстави права 0777/0666 и смени владельца на него). Разницы между файлами, созданными пхп из-под веб-сервера и мною под тем же пользователем из шелла я не вижу, но первые для пхп в апаче писабельны, а вторые - нет.
Есть идеи, что с этим делать и где причина?