Вызов php exec tar не работает при запуске через cron, работает через оболочку

Кто-нибудь может объяснить, почему эта строка работает при вызове из оболочки, но не работает при вызове через crontab?

passthru("tar xvf $file $tarfile/application $tarfile/application_detail $tarfile/application_device_type $tarfile/genre_application");
}

Ошибка, которую я получил по электронной почте после того, как cron был

tar: itunes20100907/application: невозможно открыть: нет такого файла или каталога itunes20100907/application_detail


person kitenski    schedule 07.09.2010    source источник


Ответы (1)


Как говорит ошибка, вы должны быть в неправильном каталоге. Вы должны использовать канонический путь.


Примечание. В безопасном режиме включен, вы можете выполнять файлы только в пределах safe_mode_exec_dir. По практическим причинам в настоящее время не разрешено иметь компоненты .. в пути к исполняемому файлу.

person Colin Hebert    schedule 07.09.2010
comment
И вы можете использовать функцию getcwd() в PHP, чтобы узнать, по какому пути выполняется ваш скрипт. В случае задания cron это, вероятно, домашняя папка пользователя cron. Если это, скажем, /home/ubuntu/, то путь itunes20100907/application будет интерпретироваться как /home/ubuntu/itunes20100907/application - person Mark Eirich; 20.02.2011