Php+Apache на Linux

  • Автор темы antidoto
  • Дата начала

antidoto

Guest
Php+Apache на Linux

Есть: Php-5.0.4 и Apache-1.3.33, собранные их исходников в Линуксе. Права доступа ко всем каталогам и файлам корневой директории -- 0777. Сервер выдаёт ошибку открытия файла с атрибутом "w". Просто читать и инклудить файлы он может.
Как вы думаете, в чём дело?
 

Фанат

oncle terrible
Команда форума
мы думаем, что вместо пересказа своими словами надо приводить само сообщение об ошибке, ничего в нём руками не трогая
 

antidoto

Guest
Ну, если царь-батюшка желает... :)

Warning: fopen(./data/counter.dat) [function.fopen]: failed to open stream: Permission denied in /mnt/hdb7/www/scripts/counter.php on line 32
 

antidoto

Guest
Вообще-то файлы со скриптом и с данными хранятся в разных каталогах.

kseniya@kseniya:~$ ls -al /mnt/hdb7/www/data/counter.dat
-rwxrwxr-x 1 root users 3 2005-04-08 10:46 /mnt/hdb7/www/data/counter.dat

kseniya@kseniya:~$ ls -al /mnt/hdb7/www/scripts/counter.php
-rwxrwxr-x 1 root users 760 2005-04-08 13:06 /mnt/hdb7/www/scripts/counter.php

И самое интересное, что это сразу после chmod -Rv ugo=rwx /mnt/hdb7/www/
 

messerschmitt

Новичок
Что за ахтунг у тебя с путями? Это что такое: fopen(./data/counter.dat) ? Пропиши пути правильно, авось заработает. :D
 

antidoto

Guest
Пути у меня прописаны правильно. Только они относительные, если кто не понял. У меня работают include, исполняются скрипты, но не работает запись в файл.
 

messerschmitt

Новичок
Птенчик, какое же, нах, "правильно"? Твой фопен пытаецца открыть файл /mnt/hdb7/www/scripts/data/counter.dat.
 

antidoto

Guest
Открыть он пытается не то, что вы написали, а /mnt/hdb7/www/data/counter.dat. Сам файл counter.php, который делает вызов функции, лежит в каталоге /mnt/hdb7/www/scripts/ и включён (include()) в файл index.php, который, в свою очередь, лежит в /mnt/hdb7/www/. Теперь понятно, что все пути правильные?
Скрипт пытается открыть counter.dat для записи, чтобы переписать данные о посещении. Так что всё правильно. Во всяком случае, под виндой работает без проблем.
 

messerschmitt

Новичок
Сравни. Это писал я:
/mnt/hdb7/www/scripts/data/counter.dat
А это ты:
/mnt/hdb7/www/data/counter.dat
Давай, определись уже с путями и возвращайся.

-~{}~ 09.04.05 01:12:

antidoto, понял, проехали.
 

antidoto

Guest
С путями всё нормально. Есть два каталога -- data и scripts. Это понятно?
Есть два файла -- data/counter.dat и scripts/counter.php. Пока успеваешь?
Функция fopen пытается открыть файл data/counter.dat для записи. Эта функция вызывается при исполнении скрипта, описанного в scripts/counter.php. Ещё не запутался? В этом нет ничего экстраординарного, думаю.
Далее. В файл www/index.php директивой include включён файл scripts/counter.php. Возвращайся к предыдущему абзацу и внимательно перечитай его.
Перечитал? Теперь подумай, каким должен быть относительный путь к файлу data/counter.dat.
 

SNiP

Новичок
Вообще-то файлы со скриптом и с данными хранятся в разных каталогах.

kseniya@kseniya:~$ ls -al /mnt/hdb7/www/data/counter.dat
-rwxrwxr-x 1 root users 3 2005-04-08 10:46 /mnt/hdb7/www/data/counter.dat
насколько я понял, открыть пытаешся на запись. Север что-то вроде nobody, так вот:
|владелец|группа|все остальные
|rwx|rwx|r-x|
то есть для сервера выходит файл доступен на чтение и запуск, но не на запись.
 

antidoto

Guest
Автор оригинала: SNiP
насколько я понял, открыть пытаешся на запись. Север что-то вроде nobody, так вот:
|владелец|группа|все остальные
|rwx|rwx|r-x|
то есть для сервера выходит файл доступен на чтение и запуск, но не на запись.
Здесь проблема в файловой системе: на диске hdb7 она fat32, поэтому надо будет поменять umask в /etc/fstab. Вот только до дому доберусь... :)
 
Сверху