URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3804
[ Назад ]

Исходное сообщение
"php+apache can't fopen('file','w') "

Отправлено yumm , 08-Янв-06 15:37 
День добрый. Вот бъюсь, уже ничего не понимаю...

В скрипте на 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+apache can't fopen('file','w') "
Отправлено GD , 08-Янв-06 18:43 
>День добрый. Вот бъюсь, уже ничего не понимаю...
>
>В скрипте на 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
?


"php+apache can't fopen('file','w') "
Отправлено yumm , 08-Янв-06 19:30 
>что показывают
>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+apache can't fopen('file','w') "
Отправлено Niam , 08-Янв-06 19:47 
>>что показывают
>>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+apache can't fopen('file','w') "
Отправлено yumm , 08-Янв-06 20:03 
>убери php из safe-mode или дай файлам права под которыми апач.

в phpinfo(): safe_mode Off Off
а что такое "дай файлам права"???



"php+apache can't fopen('file','w') "
Отправлено Niam , 09-Янв-06 00:13 
>>убери php из safe-mode или дай файлам права под которыми апач.
>
>в phpinfo(): safe_mode Off Off
>а что такое "дай файлам права"???

>>Вот народ пошел. Читать "К словам придирается. Пользователя файлов сделать таким, от которого апач запускает скрипт."

Дело в том, что если php в режиме safe_mode, он не дает тебе доступ, если файл имеет права пользователя отличного от того, от которого запущен сам php. Хм, если он в нормальном режиме .. возможно реагирует на то, что пользователь root, попробуй сменить пользователя.


"php+apache can't fopen('file','w') "
Отправлено yumm , 09-Янв-06 11:26 
>Дело в том, что если php в режиме safe_mode, он не дает
>тебе доступ, если файл имеет права пользователя отличного от того, от
>которого запущен сам php. Хм, если он в нормальном режиме ..
>возможно реагирует на то, что пользователь root, попробуй сменить пользователя.

Он же не в safe_mode, о чем тут говорить. Пользователя менял. На весь корень www делал chown -R apache:apache... Не помогло. Сейчас уже перенес весь кэш в /tmp, что бы хоть как-то работало :( Но проблема остается. Странно, что никто не сталкивался. Скорей всего апач как-то криво настроен, но вот где копать?..


"php+apache can't fopen('file','w') "
Отправлено Niam , 09-Янв-06 13:42 
>>Дело в том, что если php в режиме safe_mode, он не дает
>>тебе доступ, если файл имеет права пользователя отличного от того, от
>>которого запущен сам php. Хм, если он в нормальном режиме ..
>>возможно реагирует на то, что пользователь root, попробуй сменить пользователя.
>
>Он же не в safe_mode, о чем тут говорить. Пользователя менял. На
>весь корень www делал chown -R apache:apache... Не помогло. Сейчас уже
>перенес весь кэш в /tmp, что бы хоть как-то работало :(
>Но проблема остается. Странно, что никто не сталкивался. Скорей всего апач
>как-то криво настроен, но вот где копать?..

Проверь, может ли пользователь apache с корня добраться к тому файлу. Может быть, что де-то на папке на пути нет rwxr-xr-x, тоесть возможность просматривать содержимое директории. аккуратно проверь!


"php+apache can't fopen('file','w') "
Отправлено yumm , 09-Янв-06 17:54 
>Проверь, может ли пользователь apache с корня добраться к тому файлу. Может
>быть, что де-то на папке на пути нет rwxr-xr-x, тоесть возможность
>просматривать содержимое директории. аккуратно проверь!

По делу. Проверил. Все с правами ок (+x for everyone стоит на каждом каталоге в полном пути). Предлагаю забить, раз уж ответ сразу не нашелся =) Пусть кэш живет в /tmp, там ему и место...


"php+apache can't fopen('file','w') "
Отправлено GD , 09-Янв-06 22:29 
>>Проверь, может ли пользователь apache с корня добраться к тому файлу. Может
>>быть, что де-то на папке на пути нет rwxr-xr-x, тоесть возможность
>>просматривать содержимое директории. аккуратно проверь!
>
>По делу. Проверил. Все с правами ок (+x for everyone стоит на
>каждом каталоге в полном пути). Предлагаю забить, раз уж ответ сразу
>не нашелся =) Пусть кэш живет в /tmp, там ему и
>место...

я так полагаю, что где то затесалась мелкая ошибка
ибо чудес быть не может
хотя apache2 может быть (не особо верятно) тому виной...


"php+apache can't fopen('file','w') "
Отправлено yumm , 10-Янв-06 09:57 
разобрался. я тупой дебил. selinux включен :(

"php+apache can't fopen('file','w') "
Отправлено jackkot , 06-Июн-10 02:27 
спасибо тебе добрый человек)) не знаю, сколько еще бы голову ломал