Crontab에서 PHP 스크립트에 오류가 발생하는데 터미널에서 실행하면 오류가 발생하지 않는 이유는 무엇입니까?

Crontab에서 PHP 스크립트에 오류가 발생하는데 터미널에서 실행하면 오류가 발생하지 않는 이유는 무엇입니까?

PHP 파일로 Crontab을 실행하는 데 몇 가지 문제가 있습니다.

저는 6개월 넘게 Crontab에서 동일한 PHP 스크립트를 실행해 왔지만 며칠 전에 이상하게도 코드의 올바른 실행이 중단되었습니다. Crontab은 작동하지만 스크립트에서 오류가 발생합니다. 또 다른 흥미로운 점은 동일한 스크립트가 SSH 터미널에서 오류 없이 실행된다는 것입니다.

여기서 무엇이 문제가 되어야 합니까? SSH 터미널과 동일한 구성으로 실행되도록 Crontab을 구성하는 방법이 있습니까?

답변1

crontab이 아닌 명령줄에서 스크립트를 실행하는 가장 일반적인 이유는 스크립트가 환경 변수에 의존하기 때문입니다. Crontab은 몇 가지 환경 변수만 설정합니다. 일반적으로 HOME, USER, SHELL(로 설정 /bin/sh) 및 PATH(시스템 기본값으로 설정)만 설정합니다. 더 필요한 경우 crontab 파일에서 정의하거나 ~/.profile명령에서 가져와야 합니다.

어쩌면 두 가지 버전의 PHP가 설치되어 있을 수 있습니다. 하나는 명령줄에 첫 번째로 $PATH, 다른 하나는 시스템 기본 버전에 첫 번째로 설치 $PATH되어 있으며 시스템 기본 PHP가 최근에 변경되었습니다. 그러나 어떤 오류가 발생했는지 알려주지 않았기 때문에 경험에 근거한 추측 이상을 하는 것은 불가능합니다.

답변2

crontab이 로그인한 사용자와 동일한 사용자로 스크립트를 실행하는지 확인하십시오.

사용자 중 한 명에 대해 일부 환경 변수 또는 파일 권한이 변경되었을 수 있습니다.

답변3

한 가지 더 해야 할 일아니요cron이 실행하는 스크립트에서 $HOME 값이 있다고 가정합니다. $HOME을 명시적으로 사용하세요.원하지 않는다특정 값이 있다고 가정합니다. 전체 경로로 명령 및 참조 파일을 호출합니다.

관련 정보