2011-03-10 76 views
1

我有一個腳本(作爲cron運行),在服務器上創建一個名爲images的新文件夾,並將圖像從根文件夾移動到此新文件夾。稍後,另一個功能將從這些圖像創建縮略圖,並將這些圖像放入同一文件夾內名爲thumbs的另一個新文件夾中。PHP與所有者創建文件夾爲99

但是,此功能只適用於父母images文件夾由於某種奇怪原因已將所有者設置爲99的情況。該文件夾將用戶作爲其默認所有者。

我怎樣才能讓腳本創建一個文件夾,將所有者設置爲99?或者是什麼原因導致PHP腳本無法以chmod-ing文件的形式擁有用戶作爲所有者?

+0

cron是否運行一個php腳本? – Jacob 2011-03-10 02:05:02

+0

@jacob是的,它是 – Ruben 2011-03-10 22:19:29

回答

0

顯然這取決於如何在cronjob中運行php腳本來確定哪個所有者將被設置爲新創建文件的默認值。

首先,我用:

/usr/local/bin/php /home/username/public_html/script.php > /home/username/public_html/file.xml 2>&1 

但是,這創造了設置爲「用戶名」業主新的文件夾。

而是使用curl:

/usr/bin/curl -s http://domain.com/script.php > /home/username/public_html/file.xml 2>&1 

允許的新文件/與設置爲nobody(UID 99),這反過來允許下一個腳本來創建這裏面新的文件夾/文件的所有者創建的文件夾文件夾沒有問題。

+0

當您從命令行運行PHP時,它與通過Apache將PHP作爲模塊運行時不同。這就是你的'curl'方法起作用的原因。當你通過'curl'運行時,PHP腳本通過Apache模塊運行,然後爲Web服務器用戶設置權限,這正是你想要的。 – JakeGould 2014-07-13 04:37:37

2

cron作業以nobody(UID 99)運行,因此用戶必須具有適當的權限。如果您不想更改權限,則需要以不同的用戶身份運行cron作業。