簡體   English   中英

在Apache中授予PHP寫入權限

[英]Giving PHP write permission in Apache

我對配置Apache比較陌生。

我有一個PHP腳本,它根據從$_GET檢索的值編寫JSON文件。

<?php

    file_put_contents('State.json', "{ do: '" . $_GET['do'] . "' }");

    echo "Success";

?>

我通過創建XHR請求來運行該代碼。

Ally.xhr('/Cream/Foam?do=someCommand');

它返回的頁面說failed to open stream: Permission denied on line 3.

<Directory "~/Dropbox/Web">
    Options Indexes FollowSymLinks MultiViews

    AllowOverride None

    Order allow,deny
    Allow from all
</Directory>

這些是給根服務器文件夾的權限。

我需要更改什么才能允許PHP寫入文件?

(我幾乎不知道上面的塊意味着什么。)

您需要檢查運行apache的用戶是否有權寫入目錄。

所以它是這樣的:

你的apache服務器就是進程。 該過程在某些用戶(例如www)下運行。 PHP在apache下運行。 因此,如果您嘗試使用PHP寫入目錄,那么就像用戶www登錄到服務器並嘗試在同一目錄中創建文件一樣。 因此,請檢查該目錄的所有者以及該目錄的權限。 你可以這樣做,例如通過ls -la命令。 如果www將是該目錄的所有者,您將100%安全...

您可以嘗試使用設置權限

用於php的chmod函數並將您的目錄設置為/ var / www,您通常具有足夠的權限。

使用以下命令在命令行中檢查文件權限:

ls -l /path/filename

或者通過ftp客戶端,如果你有ftp訪問文件/目錄。 如果沒有,你可以像Stony上面說的那樣改變位置。

檢查它嘗試寫入的文件/目錄權限。 確保Apache進程正在運行的用戶和/或組可寫。

還要檢查/ selinux / enforce的內容,檢查SELinux是否已啟用。 如果是,請將其禁用或確保在您要寫入的路徑上設置正確的標簽。

知道有時候絕對沒有辦法只使用PHP來解決這個問題。

這兩個解決方案是:

  1. 手動配置PHP和Apache權限(警告:可能很快變臟)。
  2. 使用FTP將所有權更改為0777(完全訪問權限),然后在運行更改后還原。

我經常發現后一種選擇效果最好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM