2011-07-10 28 views
4

我有一個簡單的腳本,將文件從一個SMB安裝複製到另一個。源文件系統相同,但Web服務器不同。我使用PHP通過將文件複製到臨時目錄來處理文件,然後在其上執行其他任務。此設置在某個時間點工作,但似乎不再正常工作。有人能指引我朝着正確的方向嗎?如何跨SMB安裝PHP複製

fstab中安裝

//192.168.0.x/share /media/folder smbfs username=user,password=mypass 
//192.168.0.x/share2 /media/folder2 smbfs username=user,password=mypass 

PHP代碼

​​

錯誤

Warning: copy(/media/folder2/temp/filename.txt): failed to open stream: Permission denied in /www/myphp.php on line xx 

個文件夾權限(不安裝,但在文件服務器的源文件夾):

/media/folder = 777 
/media/folder2/temp = 777 
+0

SELinux是否正在運行?如果是這樣,我可以設想它不喜歡PHP與SMB交談。 –

+0

SELinux沒有運行,我不這麼認爲。沒有/ etc/sysconfig/selinux文件可用於cat,在文件服務器上也沒有sestatus程序。 –

+0

可以肯定的是,'ls -Z/media/folder'如果SELinux在那裏,你將擁有'-Z'選項,它應該列出上下文。 –

回答

0

我改變了命令:

copy('/media/folder/filename.txt','/tmp/filename.txt'); 

顯然,它更難以處理的SMB共享文件比我想象的。計算機重新啓動時應該刪除該文件,或者可能定期執行該文件,具體取決於系統設置。

0

聽起來像一個問題,是特定的權限和操作系統,而不是PHP ..什麼web服務器?什麼是服務器運行?沒人:沒有人? can nobody:nobody或www-root:www-root將數據讀入/寫入您嘗試訪問的目錄中?

sudo su - nobody

  • 可能不會工作,因爲它很可能將有一個/bin/false
  • 沒有人可能不是正確的帳戶.. ps auxw | grep apache | awk {'print $1'},看看它運行作爲用戶...然後嘗試改變在與sudo

該帳戶之前,PHP可以訪問寫文件,你需要確保用戶其中網絡服務器運行的是... 可以對您正在嘗試使用copy的目錄進行讀/寫的訪問。

1
system("cp /media/folder/filename.txt /media/folder2/temp/filename.txt"); 

可能適合你。