сделать маленький php-тулз

Автор daedal, 08 января 2008, 23:54:49

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

daedal

возникла проблемка. в результате непонятных манипуляций неопытным напарником, ему удалось сынсталлить неплохую тему в папке Themes  ;D но при этом права на запись у всех файлов и самой директории темы только у оунера httpd  >:( тоесть через свой ftp-аккаунт я туда не могу ничего залить или изменить. но если менять содержимое файлов в админке - все проходит на ура. собственно нужно бы сделать маахонький скрипт, в который можно былобы вписать нужную корневую директорию ручками. запустив его средствами админки, нужно чтобы он выставил всем файлам и поддиректориям 777. тоесть рекурсивный chmod. наверняка такое уже есть в Sources. может кто-нибудь уже сталкивался или знает, по-моему полезная вещь ^-^

Mavn

вообще то это проблема хоста обратитесь к хостеру
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

daedal

а я не требую от вас саппорта :) просто хотелось бы под рукой иметь такой тулз, использующий код smf.

Mavn

еще раз повторюсь проблема в вашем хосте никакого отношения к smf не имеет. Утилиту предоставляет хостер
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

daedal

Mavn, большое спасибо тебе за исчерпывающую и полезную информацию  :coolsmiley:
но контролировать это дело можно и без хостера, собственно. вот причина
ЦитироватьДело в том, что PHP-сценарии, запущенные модулем mod_php, выполняются от имени пользователя wwwserver. Соответственно, если на чтение/модификацию не были выставлены разрешения для всех (достаточно 666 - для файлов, 777 - для каталогов), то модификация созданных такими скриптами файлов (каталогов) пользователю uXXXX (id площадки) будет запрещена (при доступе по SSH, по FTP).

Для того, чтобы проблема не возникала - нужно для такого каталога (файла) установить права, достаточные для модификации файлов, посредством функции chmod.

Сделать это рекурсивно можно, исполнив PHP-сценарий:
<?php function chmod_R($path, $perm) {    $handle = opendir($path);   while ( false !== ($file = readdir($handle)) ) {     if ( ($file !== ".") && ($file !== "..") ) {       if ( is_file($file) ) {         chmod($path . "/" . $file, $perm);       }       else {         chmod($path . "/" . $file, $perm);         chmod_R($path . "/" . $file, $perm);       }     }   }   closedir($handle); }  $path = $_SERVER["QUERY_STRING"]; if ( $path{0} != "/" ) {    $path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path; } chmod_R($path, 0777); echo $path;?>
ЦитироватьРазместите этот файл на площадке, в директории, доступной веб-серверу, например, как domain.tld/www/chmod.php

Вызывать скрипт нужно так:
http://domain.tld/chmod.php?path_to_problem_dir
или так:
http://domain.tld/chmod.php?/home/uXXXXX/domain.tld/www/path_to_problem_dir

В первом случае - указывается путь, относительно DocumentRoot для данного домена (domain.tld/www/ в нашем примере). Во втором случае (uXXXXX - идентификатор вашей площадки)- абсолютный путь от корневой папки сервера.

думаю эта тулза поможет тем, у кого руки не кривые 2funny