crontab에서 내보낸 PHP 출력 저장

crontab에서 내보낸 PHP 출력 저장

매일 이메일을 보내도록 crontab에서 예약해야 하는 PHP 파일이 있습니다. 이것은 내 크론탭입니다:

45 23 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php

나는 그것이 작동하지 않는다는 것을 알았습니다. 즉, 이메일이 전송되지 않았습니다. 그래서 다음을 시도했습니다.

00 11 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php 
            >> /var/log/crontab.linus.log 2>&1

참고: 여기서 타이밍은 중요하지 않습니다. 테스트 목적으로 계속 변경합니다.

그건 소용없어요. 파일이 crontab.linus.log생성되지 않았습니다.

/var/log/cron파일을 검사하는 동안 내 cron이 실행된 것을 발견했습니다.

Feb 25 11:22:01 shoutcast01 CROND[3395]: (apache) CMD (php 
    /var/www/html/linus/class/runnable/dailyStaffReport.php 
    >> /var/log/crontab.linus.log 2>&1)

마지막으로 수동으로 수행하면 php /var/www/html/linus/class/runnable/dailyStaffReport.php받은편지함에 즉시 이메일이 도착합니다. 나는 echoes스크립트가 어딘가에서 실패했는지 확인하기 위해 PHP 스크립트에 일부 스크립트를 작성하기도 했습니다.

[root@shoutcast01 ~]# php /var/www/html/linus/class/runnable/dailyStaffReport.php
  LOADING STAFF USERS...
  COMPUTING STAFF WORK TIME...
  BUILDING CHART...
  SAVING CHART...
  WRITING DOWN THE CHART...
  SENDING THE EMAIL...
  1
  DONE.

마찬가지로 2분마다 이메일을 보내도록 예약된 다른 파일이 있는데 제대로 작동합니다.

[root@shoutcast01 ~]# crontab -u apache -l
22 11 * * * php /var/www/html/linus/class/runnable/dailyStaffReport.php 
      >> /var/log/crontab.linus.log 2>&1
*/2 * * * * php /var/www/html/linus/class/runnable/dispatchEmail.php 

요약하다

  • 터미널에서 스크립트를 수동으로 실행하면 이메일이 전달됩니다.
  • 이메일은 전달되지 않지만 cron 로그에는 스크립트가 실행되었음을 알려줍니다.
  • 아무것도 기록할 수 없습니다>> /var/log/crontab.linus.log 2>&1

이 문제를 해결하기 위해 내가 할 수 있는 일에 대한 제안이 있습니까?

답변1

디버깅이 작동하지 않는 문제는 디버깅 정보를 여기에 저장하려고 하는데 /var/log/crontab.linus.log파일이 존재하지 않고 사용자에게 apache파일을 생성할 권한이 없다는 것입니다.

이 사실을 깨닫고 직접 파일을 만들었습니다.

touch crontab.linus.log
chown apache crontab.linus.log
chgrp apache crontab.linus.log
chmod 0777 crontab.linus.log

그런 다음 작업 일정을 변경하고 실행을 기다렸습니다. 원래의 문제도 라이센스와 관련된 것으로 밝혀졌습니다.

PHP 치명적인 오류: '파일에 쓸 수 없습니다 [...] 메시지와 함께 포착되지 않은 예외 'ImagickException'

그래서 chmod 0777PHP 스크립트가 이미지를 저장하는 폴더에 설정했습니다. 그 후 Apache 사용자가 실행하고 있던 계획이 성공적으로 실행되어 이메일이 전송되었습니다.

관련 정보