Начало работы в безопасном режиме PHP для записи на сервер. Является ли это возможным?
Вопрос
У меня возникла следующая проблема, поскольку на сервере включен безопасный режим, а каталоги создаются для разных пользователей:
<Ол>Одним из решений является отключение безопасного режима. Кроме того, коллега предположил, что есть параметры, которые можно изменить, чтобы гарантировать, что каталоги находятся под тем же пользователем, что и скрипт. Поэтому я смотрю, можно ли это сделать.
Но я должен спросить. Есть ли программное решение для моей проблемы?
Я склоняюсь к «нет», так как был реализован безопасный режим для его решения на уровне php. Кроме того, фактическая проблема может показаться, что каталог создается другим пользователем, поэтому программное исправление может быть просто исправлением.
Решение
Я использовал этот обходной путь:
вместо php mkdir вы можете создавать каталоги по FTP с соответствующими правами.
function FtpMkdir($path, $newDir) {
$path = 'mainwebsite_html/'.$path;
$server='ftp.myserver.com'; // ftp server
$connection = ftp_connect($server); // connection
// login to ftp server
$user = "user@myserver.com";
$pass = "password";
$result = ftp_login($connection, $user, $pass);
// check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection, $newDir)) { // create directory
ftp_site($connection, "CHMOD 777 $newDir") or die("FTP SITE CMD failed.");
return $newDir;
} else {
return false;
}
ftp_close($connection); // close connection
}
}
Другие советы
Возможно, вы сможете отключить безопасный режим для определенного каталога с помощью файла .htaccess (если используется Apache). Р>
php_value safe_mode = Off
Вам может потребоваться, чтобы ваш хостинг-провайдер внес это изменение для вас, хотя в файле httpd.conf.
У меня был некоторый успех, когда я установил групповой бит каталога загрузки на липкий. Затем PHP может создавать внутри него каталоги и писать в него.
http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories / р>
chmod g + s каталог