Облегчаем себе жизнь при работе с хостингом без панели управления

Как не странно еще встречаются хостинг-провайдеры предоставляющие услуги без (или с очень обрезанной) панелей управления и даже без SSH...

Облегчаем себе жизнь при работе с хостингом без панели управления

Что же делать, если клиент ни в какую не хочет менять хостинг?

Эта шпаргалка, хоть и не значительно, но поможет выполнить первоначальные необходимые операции. Просто создаем php-файл, меняем ему права через ftp и выполняем через строку браузера. Итак:

Распаковка архивов. На сервере должна быть библиотека pclzip.lib.php, в той же папке, где и сам скрипт.

<?php function extractzip($file) {
require_once('pclzip.lib.php');
$archive = new PclZip($file);
if ($archive->extract() == 0) {
    die("Error : ".$archive->errorInfo(true));
}else{
    echo 'ok';
}}
extractzip('target-file.zip');
?>

Рекурсивное удаление папки.

<?php function deltree($folder) {
    if (is_dir($folder)) {
        $handle = opendir($folder);
        while ($subfile = readdir($handle)) {
            if ($subfile == '.' or $subfile == '..') continue;
            if (is_file($subfile)) @unlink("{$folder}/{$subfile}");
            else deltree("{$folder}/{$subfile}");
        }
        @closedir($handle);
        if (@rmdir($folder)) return true;
        else return false;
    } else {
        if (@unlink($folder)) return true;
        else return false;
    }
    return false;
}
deltree(target-folder);
?>

Рекурсивная смена прав доступа.

<?php
function chmod_r($path, $filemode, $dirmode) {
    if (is_dir($path) ) {
        if (!chmod($path, $dirmode)) {
            $dirmode_str=decoct($dirmode);
            print "Failed applying filemode '$dirmode_str' on directory '$path'\n";
            print "  `-> the directory '$path' will be skipped from recursive chmod\n";
            return;
        }
        $dh = opendir($path);
        while (($file = readdir($dh)) !== false) {
            if($file != '.' && $file != '..') {
                $fullpath = $path.'/'.$file;
                chmod_R($fullpath, $filemode,$dirmode);
            }
        }
        closedir($dh);
    } else {
        if (is_link($path)) {
            print "link '$path' is skipped\n";
            return;
        }
        if (!chmod($path, $filemode)) {
            $filemode_str=decoct($filemode);
            print "Failed applying filemode '$filemode_str' on file '$path'\n";
            return;
        }
    }
}

chmod_r("target-folder", 0777, 0777);
?>
×
Предложите тему или интересную задачу для следующей статьи:
×

Ждем входящих данных...