2011-04-04 76 views
0

我升級到MediaTemple上的(dv)服務器,他們使用Plesk 10.1.1。PHP - fopen似乎沒有工作,不能更改權限

我有這種類型的代碼的很多瞬間:

$myFile = "textfile.txt"; 
$fh = fopen($myFile, 'w') or die("cant open"); 
$stringData = "CONTENT"; 
fwrite($fh, $stringData); 
fclose($fh); 

能正常工作的XAMPP(本地主機),但是一旦其在服務器上,這是行不通的。它會死();並說它無法打開文件。即使該文件在那裏。

我做了一些測試,發現它的權限問題。如果我將文件更改爲0666,則可以使用。然而,我不能chmod自己像這樣的文件:

​​

這似乎並不奏效。我也試過0777。我也嘗試使用ftp url來獲得相同的結果。

所以...我有兩個問題...

問題1:

我如何使用chmod工作?我如何獲得PHP chmod();工作,有什麼我得改變在php.ini?

問題2(所需的解決方案):

我有什麼在php.ini/Plesk中/服務器設置改變使我的工作的第一位,而不必chmod來666再回到655每次我創建/編輯一個txt文件?

謝謝!

Ps。 allow_fopen已打開

+0

我認爲你的服務器用戶對textfile.txt沒有寫權限。另外,當您手動修改權限時,也是不同的用戶(誰有權利)。檢查這個。 – 2011-04-04 07:46:51

+0

你提到的allow_fopen是什麼? – Oswald 2011-04-04 07:53:39

+0

很可能是ftp服務器「使用」另一個用戶帳戶(和/或組)比web服務器用來運行php。然後它是一個配置thingy,而不是你需要改變你的代碼 - > serverfault.com或webmasters.stackexchange.com – VolkerK 2011-04-04 08:01:28

回答

0

如何讓CHMOD正常工作?如何 我得到的PHP chmod();工作,是 那裏我得改變在 php.ini?

從PHP手冊:

當前用戶是 ,其執行PHP用戶。它可能不是您用於普通shell或 FTP訪問的相同用戶的 。只有擁有大多數 系統上的文件的用戶才能更改 模式。

如果PHP有問題chmod()ing文件,請自己更改模式 - 通過FTP或shell。如果您想要更換所有者以避免出現問題,則必須通過shell執行此操作。讓PHP創建一個測試文件,例如file_put_contents("foo.txt", "bar")並記錄下所有者。然後通過shell使用chown命令並將所有者設置爲與測試文件的所有者相同。這也是chmod文件的好時機。

我有什麼在php.ini更改/ 的Plesk /服務器設置,使我的 代碼工作的第一位,而無需 於chmod 666再回到655每 時間創建/編輯txt文件?

如果你通過PHP創建一個文件,你應該可以在任何時候通過PHP進行編輯(如果需要,可以chmod)。

這使您可以通過PHP創建所有必需的文件。您可以從原始文件(例如$content = file_get_contents("textfile.txt"))讀取並將內容寫入新文件(例如file_put_contents("textfile.copy.txt", $content))。然後通過FTP/shell刪除原始文件。

+0

謝謝!我如何歸還店主?我試過你的例子,代碼,但我很困惑如何返回所有者? – 2011-04-04 08:27:19

+0

假設你想在shell中執行一個chown命令,運行www目錄內的命令'ls -l'。它會顯示所有文件的文件信息,包括所有者名稱。 – 2011-04-04 08:43:46

+0

我認爲它說所有者是psacln – 2011-04-04 09:13:05