2016-08-17 78 views
0

經過一個星期的嘗試我不知道還有什麼要做。 我有一個簡單的PHP腳本,是對我的網絡服務器稱爲getpoem.php 腳本打開了一個網站,拉它的內容,並將其保存到一下poem.txt服務器上Php腳本沒有運行www-數據cron

<?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); ?> 

所以這是一個相當簡單的腳本(它工作正常,如果我手動執行它)。該腳本應該與它的cron中的www數據的用戶,所以我運行結束了的cron使用該命令輸入的命令來執行它應該運行

sudo crontab -u www-data -e 

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

,以避免任何權限問題我給getpoem.php和詩。 TXT這樣的rwx權限(我知道什麼時候它活着,我應該改變它,但是這僅僅是測試)

-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的。 我也正在做一個cron的是運行,所以舒爾接下來的事情我改變了對的cronjob

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

至極又什麼也沒做....所以我改成了

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

未運行php文件,但在我的tmp目錄中創建了一個名爲test.txt的空文件(-.-「)

所以我認爲這個問題必須是我的www-data用戶的訪問權限中的一些問題。我的所有webcontent(php文件,webapp usw.)也都歸www所有 - 數據用戶,他們順利運行。

我需要爲www-data的cron提供額外的特權嗎?

+0

這整個問題尖叫[XY問題(http://meta.stackexchange.com/問題/ 66377 /什麼是xy問題)給我。你猜猜什麼是權限問題,你從哪裏去。也許是這樣,也許它不是一個權限錯誤,但在這一點上,它可能只是隨機猜測那些不適合SO的東西。 – PeeHaa

+1

我相信,當你使用'file_put_content'時,你應該使用「絕對路徑」,意思是'__DIR __。'/ poem.txt'',否則不清楚工作目錄是什麼......或者你可以在腳本中設置工作目錄 – Jakumi

+0

@PeeHaa嗯,我應該澄清一點,克朗不會運行我的PHP文件?或者我應該刪除我已經嘗試過的?導致否則我不知道爲什麼它應該是一個「XY問題」 – GEnGEr

回答

2

從cron運行php時,您的工作目錄通常不是該文件所在的目錄。在寫入文件時,它可能會嘗試寫入相對於通常不可寫的/的文件poem.txt

因此,您要麼設置工作目錄,要麼使用「絕對」路徑。因此,例如:

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

其中__DIR__是一個神奇的常數,其中含有當前文件所在的目錄