mkdir & safe_mode

Alister

Новичок
mkdir & safe_mode

safe mode на хостинге не дает делать mkdir

делает директорию (ругаясь (SAFE MODE Restriction in effect))
выставляет на нее права 755, эту директорию можно тока удалить и все.

PHP:
$dir=getenv("DOCUMENT_ROOT")."/groups/files/"."nat".$_POST['gid']."/";
mkdir($dir,0777);
так директорию делаю. есть какие варианты преодоления этой ситуации ?
 

yaniks

новичок
2Фанат
не много, но по мере размещения сайтов у разных региональных хостеров, небольшой опыт приобрел
 

Фанат

oncle terrible
Команда форума
опыт надо приобретать в процессе чтения документации.
В которой ясно написано, что проблема ПРАВ ДОСТУПА к ограничениям сейф моды не имеет ни малейшего отношения.
 

yaniks

новичок
хорошо, немного подругому
встречал(чаще при включенном SAFE), когда mkdir($dir,0777);

выдовал тотже результат что и в примере

а unmask();mkdir($dir);
нужный эффект,
поэтому решил просто поделится опытом (не знаниями :) )
 

Фанат

oncle terrible
Команда форума
yaniks
запомни.
Если mkdir выдает ХОТЬ КАКОЙ-ТО результат, кроме ошибки, то никакого SAFE MODE на хосте нет.
 

Alister

Новичок
внесу ясность

я делаю скрипт который при добавлении записи в БД
делает директорию, в нее пишет некоторое количество файлов.


пишу в бд
создаю директорию
загружаю в нее файлы

error_log пишет ошибку, тока когда я пытаюсь писать файлы в созданную директорию.

но т.к при safe_mode mkdir() генерит директорию, с которой много дел не сделаешь то тут
SAFE MODE Restriction in effect
и вылезает

проводил эсперименты, safe mode не полностью строгий
а такой как в мане в примере
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
тоесть работать можно, но тяжко

про umask попробую попытка не пытка, хотя если я через ftp не могу атрибуты выставить то umask тоже не поможет

можно попробывать chdir() в директорию но в safe_mode в ограничение подпадает и эта ф-я.

кстати, про ftp можно заходить через FTP functions заходить делать директорию ну т.д
 

advocat

developer
2 Фанат из все того же мануала
Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID, как и выполняемый скрипт.
2 yaniks были приколы как с umask, так и с правами в передаваемыми в функцию.

неокторые хостинги лечатся так:
PHP:
umask(0777);
mkdir('/path/to/dir/newdir');
chmod('/path/to/dir/newdir', 0777);
Alister надеюсь папка в которой ты создаешь подпапки 0777 ?
 

Profic

just Profic (PHP5 BetaTeam)
Хех
1) chmod g+s на каталог
2) chown user:apache
3) save_mode_gid on
?
 

Alister

Новичок
PHP:
ftp_mkdir ($conn_id, $dir);
$string="chmod 777 $dir";
ftp_site($conn_id,$string);
так сделал и все, потому что никаких выходов небыло
а system отрезан.
 

Screamer

Новичок
Alister
А почему бы тебе и файлы не ложить в БД? В отдельную табличку?
 
Сверху