Доброго всем времени суток!
гдето в сети нашел инфо что планеровщик заданий может ввыполнить php скрипт
а так как SH не понимаю (как и php, но в нем хотябы юзерские функции есть)
вобщем написал скрипт на пхп но у него либо прав не хватает (хоть и в планеровщике рут выбран) или таки информация была ошибочной
госпада знающие умеющие, может кто помог бы мне переписать мой скриптик на SH?
как можно ближе к моему скрипту чтобы понял основы и принципы =)
был бы примного благодарен
<?php
$fromDir = '/volume1/web/DSScripts';
$toDir = '/volume1/web/DSScripts/Lib';
function pathValidator($path) {
if(preg_match('*@eaDir*', $path)) { return false; }
if(preg_match('/^.*\.(jpg|jpeg|png)/i', $path)) { return true; }
return false;
}
function getListFiles($folder,&$all_files) {
global $toDir;
$fp = opendir($folder);
while($cv_file = readdir($fp)) {
$path = $folder."/".$cv_file;
if(is_file($path)) {
if(pathValidator($path)){
$all_files[] = $path;
}
} elseif($cv_file != "." && $cv_file != ".." && is_dir($path) && $path != $toDir){
getListFiles($path,$all_files);
}
}
closedir($fp);
}
function renameImage($path) {
global $toDir;
$exif = exif_read_data($path);
$dateTime = NULL;
if(is_null($dateTime)) {
$dateTime = $exif[DateTimeOriginal];
}
if(is_null($dateTime)) {
$dateTime = $exif[DateTimeDigitized];
}
if(is_null($dateTime)) {
$dateTime = $exif[DateTime];
}
if(is_null($dateTime)) {
$dateTime = $exif[FileDateTime];
}
if(!is_null($dateTime)) {
preg_match('/^(\d+).(\d+).(\d+).*/', $dateTime, $matches);
$dateTimeY = $matches[1];
$dateTimeM = $matches[2];
$dateTimeD = $matches[3];
if(!is_null($dateTimeY) && !is_null($dateTimeM) && !is_null($dateTimeD)) {
$fileName = basename($path);
$newDir = $toDir."/".$dateTimeY."/".$dateTimeM."/".$dateTimeD;
mkdir($newDir, 0777, true);
$newPath = $newDir."/".$fileName;
$res = rename($path, $newPath);
}
}
}
$all_files = array();
getListFiles($fromDir, $all_files);
foreach ($all_files as &$file) {
renameImage($file);
}
?>
UPD - Решение
строка вызова php скипта
php /volume1/web/your_folder/your_script.php >> /volume1/web/your_folder/log_file.log 2>&1
* указатель на то что данный скрипт является php скриптом
* путь к скрипту
* вывод в лог (не обязательный параметр)
чтобы заработал exif.so нужно
проверить откуда берет настройки пхп
$ini = get_cfg_var('cfg_file_path');
print_r('<pre>ini: '.$ini."\n");
вполне возможно (как в моем случе) это разные места
в случае вызова из таскМенеджера - /etc/php/php.ini
в случае вызова из вебИнтерфейса - /usr/local/etc/php56/php.ini
требуется в актуальный для таскменеджера фаил настроек php.ini добавить экстеншен
extension = exif.so
проверить работоспособность
и (опять же как в моем случае) если exif.so не обнаружился скопировать его из дериктории экстеншенов вебИнтерфейса в директорию экстеншенов таскМенеджера (путь к дериктории указан в файле ini.php - extension_dir)
команды которые могут понадобится
ssh [email protected] - вход (ваш логин и айпи сервера)
cd /path - переход в папку
ls - просмотр директории
sudo vi fileName - открыть в текстовом редакторе фаил для изменения (с правами админа)
:w - соханить фаил в vi
:q - выход в vi
:q! - форсировать выход в vi
esc - чтение / редактирование в vi
sudo cp /path1/fileName /path2/ - скоировать фаил (с правами админа)