Когда вы запускаете скрипт в задании cron, он запускается в ограниченной оболочке с очень небольшим количеством установленных переменных окружения. Судя по вашим ошибкам, похоже, что это может быть LD_LIBRARY_PATH, который нужно установить, поскольку ошибки относятся к куче общих библиотек, но это всего лишь предположение. Похоже, что правильные пути к библиотекам для PHP не установлены правильно в скрипте cron.
Вы можете захватить среду, используемую при запуске скрипта cron, добавив команду env в скрипт и записав результат. Сравните это с выводом env в приглашении и найдите варианты. Скорее всего, они будут из команд, выпущенных в вашем локальном или системном профиле или bashrc (или, возможно, даже .login ) файлах, которые устанавливают пути к библиотекам. Я бы специально искал пути и переменные, связанные с PHP, так как это, кажется, ваша проблема.
Мне приходилось сталкиваться с этой проблемой несколько раз в моем последнем проекте, и основное решение:
- определяет минимальную среду, необходимую для выполнения скрипта
- создать короткий скрипт, который устанавливает желаемую среду
- добавьте вызов сценария из пункта 2 в сценарии, запускающий ваши приложения, чтобы среда была правильно настроена.
- Тщательно проверьте, чтобы убедиться, что вы ничего не пропустили: -).