Forum Webscript.Ru
Программирование => PHP => Тема начата: Mog. от 08 Мая 2004, 09:23:43
-
PHP работает в safe_mode
Запускаю следующий скрипт
$dir="mydir";
$file="myfile";
$str="my string";
mkdir($dir);
chmod($dir, 0777);
$fh=fopen("$dir/$file", "w");
fwrite($fh, $str);
fclose($fh);
?>
Получаю на выходе
1. Соданный каталог
2. Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 13036 is not allowed to access "путь" owned by uid 65534 in путь/x.php on line 8
Делаю вывод, что в данном режиме в созданный каталог ничего записать нельзя.
[off]И чета мне грустно так стало[/off]
Вот хотелось бы знать, а правильный ли я сделал вывод из всего этого.
-
Mog.:
Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 13036 is not allowed to access "путь" owned by uid 65534 in путь/x.php on line 8
А "путь" == $dir?
Просто странная какая-то ошибка, вроде всё должно нормально работать.
Может, перед варнингом на fopen есть варнинг на mkdir?
-
"путь" абсолютный. Пробовал $dir с абсолютным путем, эффект тот же.
варнинг самый первый, каталог создается. А потом сыплет варнинги на фопен, фврайт и фклоуз грит нет, мол такого файла.
-
Пусть будет абсолютный. Но он ведет в то же место, что и $dir?
Потому что если нет, то это совсем уже странно...
Если директория $dir создается успешно, посмотри её uid.
Если он не совпадает с твоим уидом, наверное надо пинать админа, чего-то он напортачил...
-
FreeSpace:
он ведет в то же место, что и $dir?
Да
FreeSpace:
директория $dir создается успешно, посмотри её uid
Э... Честно гря я в этом не силен. Как посмотреть (и свой заодно).
FreeSpace:
надо пинать админа
Вот это вряд ли получится.
-
Если используешь FlashFXP в качестве FTP-клиента, то там есть колонка Owner. Посмотри, чтобы в этой колонке напротив mydir стоял твой аккаунт. В других FTP-клиентах должна быть аналогичная колонка или овнера (тот же uid) можно посмотреть в свойствах удаленного файла.
В никсах я не силен, но если есть доступ к шеллу, наверняка есть какой-то параметр для ls, который может включить отобразжение овнеров в списке файлов. Так что man ls.
-
А твой уид - 13036.
Это видно из сообщения об ошибке, если конечно овнером скрипта x.php являешься ты.
-
Поразбирался с uid\'ами.
Получается :
скрипт мой 13036, запускает его юзер(никто) 65534, каталог скриптом создается (т.к. все мое) и при создании получает владельца 65534; мой скрипт в safe_mode не имеет права туда писать, отсюда ошибка.
[OFF]Вывод - перепишу все, к черту, на Perl[/OFF]
-
Сорри, торможу сегодня совсем.
Такое поведение - вполне нормальное.
mkdir() в выполняет апач с правами nobody. Соответственно, уид у директории будет ноубоди. А вот уид твоего скрипта будет твоим. Поэтому в этой директории твой скрипт файлы создавать не сможет.
Попроси админа вырубить сейф-моуд. Если хостинг нормальный, то вопросов быть не должно.
-
Короче сделал я "инсталятор" для скриптов, который нужные скрипты создает и каталог делает (в котором эти скрипты и резвятся).
А вот функция filesize все одно не хочет работать, грит нет прав на доступ в каталог и показывает мне тот каталог. И каталог кажет с абсолютным путем, точнее, абсолютный путь до каталога с которого начинается веб. Уж я её и с абсолютными путями и с относительными, а она ни в какую, зараза. :)
Вот такая вот ректальная аденотомия получилась.