搜尋

首頁  >  問答  >  主體

如何授予 PHP 對目錄的寫入權限?

<p>我正在嘗試使用 PHP 建立文件,但它不起作用。我假設這是因為它沒有寫存取權限(以前一直是這個問題)。我嘗試透過讓資料夾 chmod 0777 來測試這是否是問題所在,但這最終導致該目錄中的每個腳本都傳回 500 錯誤訊息,直到我將其更改回來。 如何授予 PHP 對我的檔案系統的寫入存取權限,以便它可以建立檔案? </p> <p>編輯:它託管在使用 Apache 的 Hostgator 共享託管上。 </p> <p>編輯2:有人問代碼: 程式碼是GD圖像腳本。我知道它的其餘部分的工作原理就像以前我在每次調用它時創建圖像一樣。現在我嘗試在添加新文字時創建它們並將它們保存到資料夾中。我的寫入行是: imagejpeg(null,$file,85);</p> <p>我還創建了一個測試檔案來檢查它是否只是一個損壞的腳本(主要是從 tizag 複製的): http://gearboxshow.info/rkr/lesig.jpg/testfile.txt(我不知道是否/如何正確地在此處發布程式碼。這是 PHP 腳本的內容,減去 PHP 標籤。)</p> <p>它返回13,13,1(單獨的行),所以看起來好像它認為它寫了一些東西,但是testfile.txt是空白的(我上傳了一個空白的),或者不存在(如果我刪除它) )。 </p> <p>編輯3:伺服器運行CentOS。 </p>
P粉512363233P粉512363233489 天前611

全部回覆(2)我來回復

  • P粉376738875

    P粉3767388752023-08-28 09:42:11

    簡單的三步驟解決方案


    第 1 步:確定 PHP 使用者

    建立一個包含以下內容的 PHP 檔案:

    <?php echo `whoami`; ?>

    將其上傳到您的網頁伺服器。輸出應類似以下內容:

    www-data

    因此,PHP 使用者是 www-data


    第 2 步:確定目錄擁有者

    接下來,透過命令列檢查Web目錄的詳細資訊:

    ls -dl /var/www/example.com/public_html/example-folder

    結果應類似以下內容:

    drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder

    因此,該目錄的擁有者是 exampleuser1


    第 3 步:將目錄擁有者變更為 PHP 使用者

    然後,將Web目錄的擁有者變更為PHP使用者:

    sudo chown -R www-data /var/www/example.com/public_html/example-folder

    驗證 Web 目錄的擁有者是否已變更:

    ls -dl /var/www/example.com/public_html/example-folder

    結果應類似以下內容:

    drwxrwxr-x 2 www-data exampleuser2 4096 Mar 29 16:34 example-folder

    至此,example-folder 的擁有者已成功變更為 PHP 使用者:www-data


    完成! PHP 現在應該能夠寫入該目錄。

    回覆
    0
  • P粉352408038

    P粉3524080382023-08-28 09:07:16

    一個簡單的方法是讓 PHP 先建立目錄本身。

    <?php
     $dir = 'myDir';
    
     // create new directory with 744 permissions if it does not exist yet
     // owner will be the user/group the PHP script is run under
     if ( !file_exists($dir) ) {
         mkdir ($dir, 0744);
     }
    
     file_put_contents ($dir.'/test.txt', 'Hello File');

    這可以為您省去權限方面的麻煩。

    回覆
    0
  • 取消回覆