[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PCLZIP_ERR_READ_OPEN_FAIL (-2)
dvs
Добрый день, вот такая вот ошибка получается при архивировании файлов на сервере:
Error : PCLZIP_ERR_READ_OPEN_FAIL (-2) : Unable to open file '../sessions/sess_1365715ff471ab4ac6e6c6e8874e61df' in binary read mode


Если путь к скрипту выполняющему архив прописываю в url-е, то архивирование проходит успешно, а вот по крону никак, вылетает такая вот ошибка[не удается открыть файл сессии].

кусок кода из pclzip.lib.php
        // ----- Open the source file
if (($v_file = @fopen($p_filename, "br")) == 0) {
PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
return PclZip::errorCode();
}

Если флаг "b" ставлю в конец параметра mode, то ошибка исчезает, но появляется аналогичная с файлом .htaccess
Подскажите пожалуйста в чем может быть проблема?

kaww
dvs, используйте абсолютные пути вместо относительных. т.к. когда скрипт запускается в браузере, то рабочая директория - это web root сервера, а в случае с кронтаб какая-то другая, например home пользователя от которого запущен crontab
dvs
kaww, крон я настроил правильно[и путь к php обработчику и абсолютный путь])).
/usr/local/apache/bin/php-cgi.5.3 /www/sar/users/sar-crm/www/htdocs/cron/savefile.php

тестовые скрипты отрабатывают, думаю проблема с mode - параметром или доступом к файлу
kaww
dvs, причем тут это. разумеется, что пути до интерпретатора и скрипта в команде правильные, иначе скрипт бы не запускался. Весь вопрос в том, в какой директории ты находишься (наверное такая формулировка понятнее) когда запускаешь скрипт. Чтобы убедится, в этом добавь в начало savefile.php этот:

file_put_contents(__DIR__ . '/pwd.txt', getcwd());


потом посмотри, что будет в файле pwd.txt если открыть скрипт в браузере или запустить командой, которая в crontab
SlavaFr
Не правда сложно найти ошибку, особенно когда сам подавляешь сообщение об ошибке при помощи "@"?

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
dvs
kaww,
pwd.txt(через браузер)
/www/sar/users/sar-crm/www/htdocs/cron

pwd.txt(по крону)
Файл не создался(PHP Warning: file_put_contents(/www/sar/users/sar-crm/www/htdocs/cron/pwd.txt) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: Permission denied in /www/sar/users/sar-crm/www/htdocs/cron/savefile.php on line 2)
SlavaFr
значит у крона нет прав писать в эту папку.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
dvs
Цитата (SlavaFr @ 13.08.2014 - 12:20)
Не правда сложно найти ошибку, особенно когда сам подавляешь сообщение об ошибке при помощи "@"?

Правда)) включение показа ошибок дало:
Warning: fopen(/www/sar/users/sar-crm/www/htdocs/archive/file20140813.tar) [function.fopen]: failed to open stream: Permission denied in /www/sar/users/sar-crm/www/htdocs/pclzip_2_8_2/pclzip.lib.php on line 2353
Error : PCLZIP_ERR_READ_OPEN_FAIL (-2) : 4Unable to open archive '/www/saratove/users/saratove-crm/www/htdocs/archive/file20140813.tar' in wb mode

строка 2353
    // ----- Open the zip file
if (($this->zip_fd = fopen($this->zipname, $p_mode)) == 0)//2353
{
// ----- Error log
PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, '4Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');

// ----- Return
return PclZip::errorCode();
}
SlavaFr
что говорит в командной строке
ls -l /www/sar/users/sar-crm/www/htdocs/archive/file20140813.tar

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
dvs
SlavaFr
-rw-r--r--  1 sar  sar-users  47547485 Aug 13 13:00 /www/sar/users/sar-crm/www/htdocs/archive/file20140813.tar
SlavaFr
ну правильно, твоя группа не имеет права писать, а ты открыл как раз чтоб писать о чем и говорит показанная тобой ошибка "' in wb mode"

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
dvs
SlavaFr
Спасибо, тоже уже начал догадываться
SlavaFr
не знаю сможет ли php в этом случае изменить права. Попробуй в php исполнить chmod , если is_writable выдаст false.


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.