2014-09-17 2 views
0

Я искал переполнение стека и Google в течение многих часов и не могу найти ответ. Я нашел вещи, которые связаны, но ничего не работает.PHP Script создает папку, но не может создать папку внутри

Вот код:

$oldmask = umask(0); 

if(!is_dir("play")){ 
    mkdir("play", 0777, true); 
    chmod("play", 0777); 
} 
if(!is_dir("play/playTest")){ 
    mkdir("play/playTest", 0777, true); 
    chmod("play/playTest", 0777); 
} 

umask($oldmask); 

Каталога «игра» создаются в порядке, но я получаю эту ошибку, когда он пытается создать «/ воспроизведение тестирует» каталог.

SAFE MODE Restriction in effect. The script whose uid/gid is 178245/178245 is not allowed to access /a/b/c/play owned by uid/gid 25000/25000 in /a/b/c/script.php

Я понимаю, что это ограничение владельца файла из-за безопасного режима, но почему бы пользователь будет отличаться, если папка была создана в том же сценарии?

Я пробовал с и без umask и с и без chmod, и многое другое, но ничего не сработало.

Любая помощь будет принята с благодарностью, спасибо.

+1

Поскольку вы используете безопасный режим, вы» re все еще использует PHP <= 5.3. Деактивируйте безопасный режим, поэтому простое решение. –

+0

Какая у вас ОС (операционная система)? – Kleskowy

+0

К сожалению, у меня нет возможности отключить безопасный режим, но зачем мне это нужно? Думаю, мне интересно, почему php создает папки с одним владельцем, но читает их как еще один? OS, которую я использую, это OSX-Mavericks, но это не имеет значения, поскольку я загружаю файлы на сайт через ftp. – Nedearb

ответ

0

Это Hacky обходной путь основан на безопасном режиме уязвимости:

(вы можете рекурсивно создавать каталоги, если вы делаете это с помощью FTP)

http://php.net/manual/en/function.mkdir.php#104301

+0

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

+0

Это сводится к особенностям безопасного режима. В этой заметке говорится больше, но, по общему признанию, она не говорит * почему * http://php.net/manual/en/features.safe-mode.php#45917. Однако я полностью согласен. Если вы можете помочь, вы не должны реализовывать хак. Вы должны отключить безопасный режим –

+0

Я, наконец, получил свой админ сайта, чтобы отключить безопасный режим, так что теперь все хорошо. Слишком плохо никто не смог найти решение этой причуды ...: / – Nedearb

Смежные вопросы