День добрый. Вот бъюсь, уже ничего не понимаю...В скрипте на php идет вызов:
if($fp=fopen("/var/www/html/other/cache1/test.txt", "w" ))...В error_log'е имеем:
PHP Warning: fopen(/var/www/html/other/cache1/test.txt): failed to open stream: Permission denied in /var/www/html/phpinfo.php on line 2Доступ на каталог:
drwxrwxrwx 2 root root 4096 Янв 8 16:49 cache1При этом из того же скрипта в /tmp все создается без проблем. И вызов 'php -f...' из-под любого пользователя также проходит (файл открывается для записи).
Apache 2.0.52 (крутится под 'apache:apache').
PHP 4.3.9
Где порылась собака (кроме как в моем ДНК)?
>День добрый. Вот бъюсь, уже ничего не понимаю...
>
>В скрипте на php идет вызов:
>if($fp=fopen("/var/www/html/other/cache1/test.txt", "w" ))...
>
>В error_log'е имеем:
>PHP Warning: fopen(/var/www/html/other/cache1/test.txt): failed to open stream: Permission denied in /var/www/html/phpinfo.php
>on line 2
>
>Доступ на каталог:
>drwxrwxrwx 2 root root 4096 Янв 8 16:49 cache1
>
>При этом из того же скрипта в /tmp все создается без проблем.
>И вызов 'php -f...' из-под любого пользователя также проходит (файл открывается
>для записи).
>
>Apache 2.0.52 (крутится под 'apache:apache').
>PHP 4.3.9
>Где порылась собака (кроме как в моем ДНК)?что показывают
ls -la /var/www/html/other/cache1
ls -la /var/www/html/other/cache1/test.txt
?
>что показывают
>ls -la /var/www/html/other/cache1
>ls -la /var/www/html/other/cache1/test.txt
>?$ls -la /var/www/html/other/cache1
итого 16
drwxrwxrwx 2 root root 4096 Янв 8 19:06 .
drwxr-xr-x 4 root root 4096 Янв 8 17:16 ..а test.txt будет 755 а пользователь тот, от имени которого пускался скрипт из shell'а (естественно). если же писать скриптом в /tmp (из браузера, чего и не получается с каталогом /var/www...) пользователь будет, соответственно apache.
Вообще мне уже стало понятно, что дело в апаче, а не в чем-то еще.
Вот настройки /var/www/html:DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory><Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>но что-то мне подсказывает что все здесь правильно :(
>>что показывают
>>ls -la /var/www/html/other/cache1
>>ls -la /var/www/html/other/cache1/test.txt
>>?
>
>$ls -la /var/www/html/other/cache1
>итого 16
>drwxrwxrwx 2 root root 4096 Янв 8 19:06 .
>drwxr-xr-x 4 root root 4096 Янв 8 17:16 ..
>
>а test.txt будет 755 а пользователь тот, от имени которого пускался скрипт
>из shell'а (естественно). если же писать скриптом в /tmp (из браузера,
>чего и не получается с каталогом /var/www...) пользователь будет, соответственно apache.
>
>
>Вообще мне уже стало понятно, что дело в апаче, а не в
>чем-то еще.
>Вот настройки /var/www/html:
>
>DocumentRoot "/var/www/html"
>
><Directory />
> Options FollowSymLinks
> AllowOverride None
></Directory>
>
><Directory "/var/www/html">
> Options Indexes FollowSymLinks
> AllowOverride None
> Order allow,deny
> Allow from all
></Directory>
>
>но что-то мне подсказывает что все здесь правильно :(убери php из safe-mode или дай файлам права под которыми апач.
>убери php из safe-mode или дай файлам права под которыми апач.в phpinfo(): safe_mode Off Off
а что такое "дай файлам права"???
>>убери php из safe-mode или дай файлам права под которыми апач.
>
>в phpinfo(): safe_mode Off Off
>а что такое "дай файлам права"???>>Вот народ пошел. Читать "К словам придирается. Пользователя файлов сделать таким, от которого апач запускает скрипт."
Дело в том, что если php в режиме safe_mode, он не дает тебе доступ, если файл имеет права пользователя отличного от того, от которого запущен сам php. Хм, если он в нормальном режиме .. возможно реагирует на то, что пользователь root, попробуй сменить пользователя.
>Дело в том, что если php в режиме safe_mode, он не дает
>тебе доступ, если файл имеет права пользователя отличного от того, от
>которого запущен сам php. Хм, если он в нормальном режиме ..
>возможно реагирует на то, что пользователь root, попробуй сменить пользователя.Он же не в safe_mode, о чем тут говорить. Пользователя менял. На весь корень www делал chown -R apache:apache... Не помогло. Сейчас уже перенес весь кэш в /tmp, что бы хоть как-то работало :( Но проблема остается. Странно, что никто не сталкивался. Скорей всего апач как-то криво настроен, но вот где копать?..
>>Дело в том, что если php в режиме safe_mode, он не дает
>>тебе доступ, если файл имеет права пользователя отличного от того, от
>>которого запущен сам php. Хм, если он в нормальном режиме ..
>>возможно реагирует на то, что пользователь root, попробуй сменить пользователя.
>
>Он же не в safe_mode, о чем тут говорить. Пользователя менял. На
>весь корень www делал chown -R apache:apache... Не помогло. Сейчас уже
>перенес весь кэш в /tmp, что бы хоть как-то работало :(
>Но проблема остается. Странно, что никто не сталкивался. Скорей всего апач
>как-то криво настроен, но вот где копать?..Проверь, может ли пользователь apache с корня добраться к тому файлу. Может быть, что де-то на папке на пути нет rwxr-xr-x, тоесть возможность просматривать содержимое директории. аккуратно проверь!
>Проверь, может ли пользователь apache с корня добраться к тому файлу. Может
>быть, что де-то на папке на пути нет rwxr-xr-x, тоесть возможность
>просматривать содержимое директории. аккуратно проверь!По делу. Проверил. Все с правами ок (+x for everyone стоит на каждом каталоге в полном пути). Предлагаю забить, раз уж ответ сразу не нашелся =) Пусть кэш живет в /tmp, там ему и место...
>>Проверь, может ли пользователь apache с корня добраться к тому файлу. Может
>>быть, что де-то на папке на пути нет rwxr-xr-x, тоесть возможность
>>просматривать содержимое директории. аккуратно проверь!
>
>По делу. Проверил. Все с правами ок (+x for everyone стоит на
>каждом каталоге в полном пути). Предлагаю забить, раз уж ответ сразу
>не нашелся =) Пусть кэш живет в /tmp, там ему и
>место...я так полагаю, что где то затесалась мелкая ошибка
ибо чудес быть не может
хотя apache2 может быть (не особо верятно) тому виной...
разобрался. я тупой дебил. selinux включен :(
спасибо тебе добрый человек)) не знаю, сколько еще бы голову ломал