Эта тема регулярно проскакивает, да и сам я с ней постоянно сталкиваюсь, поэтому потратил некоторое время и разобрался как и что нужно делать.
Во-первых. Оказывается на их серверах по-умолчанию ставятся права на файлы - 666, на папки - 777.
Но при копировании по ftp или ssh на файлы/папки устанавливаются права 644/775.
Чтобы это исключить необходимо создать файл с именем .ftpaccess с одной строкой
Umask 000 000
и положить этот файл в папку www вашего домена.
Если вы только собираетесь устанавливать систему на хостинг, то вышеприведенной операции должно по идее хватить и проблем с доступом к файлам не будет при установки системы через ssh.
Если же у вас уже установлена система то делаем следующее.
Для начала создаем файл chmod.php
<?php
function chmod_R($path, $permf, $permd) {
$handle = opendir($path);
while ( false !== ($file = readdir($handle)) ) {
if ( ($file !== ".") && ($file !== "..") ) {
if ( is_file($file) ) {
chmod($path . "/" . $file, $permf);
}
else {
chmod($path . "/" . $file, $permd);
chmod_R($path . "/" . $file, $permf, $permd);
}
}
}
closedir($handle);
}
$path = $_SERVER["QUERY_STRING"];
if ( $path{0} != "/" ) {
$path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path;
}
chmod_R($path, 0666, 0777);
echo $path;
?>
Разместите этот файл на площадке, в директории, доступной веб-серверу, например, как domain.tld/www/chmod.php
Вызывать скрипт нужно так:
domain.tld/chmod.php?path_to_problem_dir
или так:
domain.tld/chmod.php?/home/uXXXXX/domain.tld/www/path_to_problem_dir
В первом случае - указывается путь, относительно DocumentRoot для данного домена (domain.tld/www/ в нашем примере). Во втором случае (uXXXXX - идентификатор вашей площадки)- абсолютный путь от корневой папки сервера.
После этой операции все файлы/папки созданные PHP-сценариями будет иметь необходимые права на доступ.
Следующий шаг - назначить соответствующие права на файлы/папки созданные через ftp или ssh.
Для этого либо воспользуйтесь ftp-клиентом который умеет выполнять функцию chmod (например FlashFXP), либо через ssh выполните последовательно две команды находясь внутри папки www вашего домена:
find . -type f -exec chmod 666 \{\} \;
find . -type d -exec chmod 777 \{\} \;
Теперь идем в "Проверку сайта" и наблюдаем, что все файлы на площадке доступны для чтения/записи.
Удачи!