tarya
Новичок
Добрый день.
У себя в системе чтоб выставлять CHMOD не руками я написал метод который выставляет разрешения на директории. Сделал это через подключение через FTP. Используя функции которые предлагает мануал: ftp_connect, ftp_login, ftp_site.
На моем сервере где я все разрабатываю все работает без проблем, но когда перенес проект на хостинг клиента данная функция не заработала, пытался разобраться в чем дело но не было времени, и так как это было не критично выставил все руками и забыл. Потом еще один проект выложил недавно, и гляжу и у другого провайдера не работает. Я тут решил уже для себя разобраться в чем дело. Написал в саппорт, мол это так отключают из безопасности, но те сказали что все должно работать и найдите проблему и обращайтесь.
Я решил для себя написать для примера небольшую функцию и если что не так показать ее провайдеру.
Скрипт выдал "Could not change perms on /home/hoteltis/public_html/admin/inc/template/: No such file or directory". Я удивился, перепроверил пути, но ошибка говорить что директории нет. Тогда я взял еще функцию которая просто листает эту директории, по аналогии она не должна была мне показать содержимое директории, и сказать что директории попросту нет. Но она выдала что и положено содержимое директории которую я и хочу для теста изменить chmod.
Тогда и получается что у меня непонятная ошибка "Could not change perms on /home/hoteltis/public_html/admin/inc/template/: No such file or directory" при том что директория существует.
Прошу подсказать советом что это и как правильно поступить.
Спасибо за ваши советы и время.
У себя в системе чтоб выставлять CHMOD не руками я написал метод который выставляет разрешения на директории. Сделал это через подключение через FTP. Используя функции которые предлагает мануал: ftp_connect, ftp_login, ftp_site.
На моем сервере где я все разрабатываю все работает без проблем, но когда перенес проект на хостинг клиента данная функция не заработала, пытался разобраться в чем дело но не было времени, и так как это было не критично выставил все руками и забыл. Потом еще один проект выложил недавно, и гляжу и у другого провайдера не работает. Я тут решил уже для себя разобраться в чем дело. Написал в саппорт, мол это так отключают из безопасности, но те сказали что все должно работать и найдите проблему и обращайтесь.
Я решил для себя написать для примера небольшую функцию и если что не так показать ее провайдеру.
Скрипт выдал "Could not change perms on /home/hoteltis/public_html/admin/inc/template/: No such file or directory". Я удивился, перепроверил пути, но ошибка говорить что директории нет. Тогда я взял еще функцию которая просто листает эту директории, по аналогии она не должна была мне показать содержимое директории, и сказать что директории попросту нет. Но она выдала что и положено содержимое директории которую я и хочу для теста изменить chmod.
Тогда и получается что у меня непонятная ошибка "Could not change perms on /home/hoteltis/public_html/admin/inc/template/: No such file or directory" при том что директория существует.
Прошу подсказать советом что это и как правильно поступить.
PHP:
<?
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
class Ftp{
/**
* @param $path
* @param $xcite
*
* @return bool
*/
public function ChangeMode($path, $xcite){
$ftp_user_name = "login";
$ftp_user_pass = "xxx";
$ftp_server = "99.99.99.99";
$conn_id = ftp_connect($ftp_server);
if(ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {
ftp_pasv($conn_id, true);
// try to chmod $path directory
$command = "CHMOD 0". $xcite ." ".$path;
echo "<br /><strong>Execute: ".$command."</strong><br /><br />";
if(ftp_site($conn_id, $command) !== false) {
echo "Success! ".$path;
} else {
echo "False! ".$path;
}
//close the connection
ftp_close($conn_id);
} else {
echo "Error, not connected to Ftp ".$ftp_server;
}
}
/**
* @param $start_dir
*/
public function listDir($start_dir){
$backups = array();
$backupdir = opendir($start_dir);
echo "<strong>List: {$start_dir}</strong><br /><br />";
while(($file = readdir($backupdir)) !== false):
if(strcmp($file, '.')==0 || strcmp($file, '..')==0) continue;
echo $start_dir.$file."<br />";
endwhile;
closedir($backupdir);
array_multisort($backups, SORT_DESC);
}
}
$ftp = new Ftp();
$dir = $_SERVER['DOCUMENT_ROOT']."/admin/inc/template/";
$ftp->listDir($dir);
$ftp->ChangeMode($dir, "777");
?>
Спасибо за ваши советы и время.