2016-08-17 4 views
0

일주일 후에 시도해야 할 일이 무엇인지 알지 못합니다. 나는이 스크립트는 웹 사이트의 컨텐츠를 가져옵니다 열어 서버에 poem.txt에 저장 getpoem.php라는 내 웹 서버에 간단한 PHP 스크립트를www-data cron으로 실행되지 않는 PHP 스크립트

<?php 
    //File to extract the Poem of the day 
    $homepage = file_get_contents('http://SomeWebsite.com/today.php'); 
    $poemALL = substr($homepage,strpos($homepage,"<p>"),strlen($homepage)); 
    . 
    . // extracting the poem and saving it to $poemFinish 
    . 
    file_put_contents("poem.txt", $poemFinish); ?> 

그래서 이것은 매우 간단하다 스크립트 (수동으로 실행하면 잘 작동합니다). 내가이 명령 크론을에 opend하고 명령을 입력 그래서이 스크립트는 내가 getpoem.php과시를 준 모든 권한 문제를 피하기 위해

sudo crontab -u www-data -e 

0 3 * * * php /var/www/html/getpoem.php 

를 실행해야 그 크론과 www가 데이터 사용자와 실행해야합니다. 이 같은 RWX 권한이 txt (내가 때의 라이브 내가 그것을 변경해야합니다 알고 있지만 이것은 단지 테스트하는 것입니다)

-rwxrwxrwx 1 www-data www-data 1189 Aug 17 15:07 getpoem.php 
-rwxrwxrwx 1 www-data www-data 1335 Aug 17 15:07 poem.txt 

그래서이 설정이지만, 그것은 실행되지 않습니다.

내가 지금까지 "php"를/usr/bin/php로 변경하여 cron이 PHP가 무엇인지 알아 냈습니다. 내가 크론 그렇게 실행중인 슈어을 만들고 있었다 않았다 다음 것은 내가

2 * * * */usr/bin/php /var/www/html/getpoem.php | > /var/www/html/test.txt 

느릅 나무에 cronjob를 변경 다시 그래서 난

2 * * * */usr/bin/php /var/www/html/getpoem.php | > /tmp/test.txt 

로 변경 .... 아무것도하지없는 실행되지 않았다 PHP 파일을 만들었지 만 tmp 디렉토리에 test.txt라는 빈 (-.- ") 파일을 만들었습니다.

그래서 내 www 데이터 사용자의 액세스 권한에 다소 문제가 있다고 생각합니다. 내 모든 웹 콘텐츠 (php 파일, webapp usw.)는 www가 소유하고 있습니다. 데이터 사용자가 원활하게 실행됩니다.

www-data의 cron에 대한 추가 권한이 필요합니까?

+0

이 전체 질문은 비명 [XY 문제] (http://meta.stackexchange.com/ : 그래서 예를 들면 질문/66377/what-is-the-xy-problem). 당신은 그것이 권한 문제이고 당신이 거기서 나가는 것에 근거하여 짐작하고 있습니다. 어쩌면 그것은 아마도 사용 권한 오류가 아니지만이 시점에서는 SO에 적합하지 않은 것을 무작위로 추측 할 가능성이 있습니다. – PeeHaa

+1

'file_put_content' 때'__DIR __. '/ poem.txt'를 의미하는 "absolute"경로를 사용해야한다고 생각합니다. 그렇지 않으면 작업 디렉토리가 무엇인지 명확하지 않기 때문입니다 ... 스크립트에서 작업 디렉토리를 설정할 수도 있습니다. – Jakumi

+0

@PeeHaa 흠 내가 cron은 내 PHP 파일을 실행하지 않는 것이 더 명확하게해야합니까? 아니면 그냥 내가 이미 시도한 것을 제거해야합니까? 그렇지 않으면 내가 왜 "XY 문제"야하는지 모른다. – GEnGEr

답변

2

크론에서 PHP를 실행, 작업 디렉토리는 일반적으로 파일이 파일을 작성할 때, 그것은 일반적으로 쓸 수 없습니다 /에 파일 poem.txt 상대를 작성하려고 할 수도 있습니다.에있는 디렉토리가 아니다.

그래서 작업 디렉토리를 설정하거나 "절대"경로를 사용해야합니다. . __DIR__

file_put_contents(__DIR__.'/poem.txt'); 

현재 파일이있는 디렉토리를 포함하는 마법 일정

관련 문제