2014-04-10 84 views
0

我使用Ubuntu 12.04和Apache2。我的Perl腳本是/usr/lib/cgi-bin,我試圖寫一個文件(打開「>」),以/var/www/my_custom_dir,但我得到:Perl不允許寫入文件

權限被拒絕

如果我嘗試寫劇本的目錄或其他任何錯誤是相同的。權限似乎是正確的。一切都是755,根源所有者。我試圖將「my_custom_dir」所有者更改爲www-data(apache用戶),但沒有任何區別。

open (UPLOADFILE, ">$filepath") or die "$!"; binmode UPLOADFILE; 
while (<$file>) { print UPLOADFILE $_; } close($file); close UPLOADFILE; } 

它「死」在第一行。日誌上的錯誤是「Permission denied at /usr/lib/cgi-bin/script.cgi」

回答

2

即使您在root中啓動cgi-bin,它也不起作用?

也許路徑上的某個目錄沒有適用正確的權限。目錄必須是+ x才能打開。

嘗試檢查所有cgi必須經過的目錄,或在www-data中用「my_custom_dir」作爲apache用戶午餐cgi。

0

首先,將root設置爲cgi-bin的所有者不是一個好主意。如你所見,5 = 4 + 0 + 1,所以它不給非所有者寫入權限,只讀取和執行。

你改變店主的方式是什麼?嘗試做recursevly(搭配chmod -R)

而且經常檢查,如果$ filepath是正確的:

open (UPLOADFILE, ">$filepath") or die "Cannot open $filepath: $!"; 
+0

幾個小時的應力認爲它有一些東西需要與服務器的權限,它發生問題是後在perl中,出於某種原因,我沒有idead:open(UPLOADFILE,「> $ filepath」)不起作用,但是:打開UPLOADFILE,「>」,「$ filepath」;確實有效。 – user3518089

相關問題