Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

PHP設定權限CHMOD?

我最近開始使用PHP,

我發現一件奇怪的事,以前我都是用CGI程式,

不論什麼功能的CGI都會附上說明,會說某某檔

上傳後要把他設定成777、或某某檔要設定成666.

可是各種功能的PHP怎麼都沒有特別提到說要不要

設定777或666之類的呢?

是不是代表PHP只要上傳到網頁空間就會跑了,完全

用不著像CGI一樣要設定CHMOD嗎?

不知道我會不會問得太難了...=__=

PS:

Update:

果然問得太難了嗎...再延長5天= =||

Update 2:

to 風的小孩

1.CGI的CHMOD定義就是,不是每次我們下載了CGI.

他都會有說明書,例如某BBS CGI他會說:

『檔案上傳後.yybbs.cgi要設定755. counte.dat要設定

成555.那個yybbs2要設定成777』

CGI都會要求要些。如果沒設定就會出現恐怖

的[500]錯誤現象@@

2.原來PHP不用設定CHMOD啊?爽啦!

可是我要上傳的是佈告版功能的PHP耶.

你確定上傳後不用更改chmod嗎?

↓我要用的就是這個PHP.請幫忙看看要不要設.@@

http://www.520cc.com/php/new/1/sub.php

5 Answers

Rating
  • Anonymous
    2 decades ago
    Favorite Answer

    在 LINUX 下 的檔案模式不比windows 系統.

    基本上. 777 是開放所有屬性. 換言之. 如果你設成 777 就表示只要我真的入侵到你的系統當中. 我隨時可以修改這種檔案加以執行. 或者是等你親自來執行.

    建議您必須先有初步對權限的了解.

    cgi 程式的執行, 或者是 pl(Perl) 的執行. 必須是檔案的 owner, 屬於某個群組, 並且該檔案有執行屬性. 才有辦法執行.

    對於 php 這種檔案. 如同上幾個人的回答一樣. 是經過設定了才可以執行. apache 會呼叫 php 來處理這種檔案. 即使如此. 仍然存在著權限的問題.

    例如檔案的屬性是只能寫禁止讀的話, 一樣還是不能讀取的. 詳見 httpd.conf 的設定. 在特定的情況下, 你設成 777 反而APACHE會無法執行. 這並不是簡單幾個字就能說明的.

    只能讀取不能寫. 是比較安全的做法. 尤其是網路得以存取的檔案. 權限更顯的重要. 以免你的程式沒問題. 但是經由其它程式的問題, 被強迫更改你的程式內容, 去做些傷害 server 的事情. 舉例子來說. curl 的樣子吧. 就曾出現過安全性的問題.

    建議您最好用個30 分鐘讀完 linux 檔案結構的說明. 將會有助於明白這些觀念.

    Source(s):
  • 6 years ago

    到下面的網址看看吧

    ▶▶http://qoozoo09260.pixnet.net/blog

  • 2 decades ago

    網頁上的PHP程式不需要chmod就可以執行

    是因為PHP是使用Module的方式跟著Apache載入了,

    Apache執行的過程當中,因為本身就可以使用mod_php3 or mod_php4的能力去執行PHP程式,所以PHP程式本身不需要加增執行權限

    對應 為什麼CGI類的無法如此呢?

    CGI類的執行方式有點類似Apache再次去外部呼叫CGI程式,

    而怎麼去執行或是去拿那一個程式語言來執行,是根據檔案前端的magic key(ex: !#/bin/perl、!#/bin/sh),這樣子就需要把他修改成可執行狀態

    不過除了程式本身可執行狀態的設定跟CGI不一樣,是否可讀可寫仍然跟CGI類的程式是一樣的,特別是資料存放點的狀態。以你提供的留言板程式來看,我下載的是3.0版,

    sub.dat、set.dat 這兩個檔案和data目錄在執行的過程當中有需要被寫入的動作,一定要確認www的身分可以寫入,執行才會正常。這點在他的說明檔裡面也註明了(其實目錄777,檔案666就可以)。

    所以歸納起來

    網頁上PHP的程式除了執行的權限不需要特別說明以外,其他涉及寫入的動作仍然要註明,這才是開發人員的好習慣,所有程式亦同。

  • Anonymous
    2 decades ago

    ps:這題我也覺得很簡單=.=只不過是小question..但我算準了知識+沒幾個人知道才出那麼高點..你看平常20點一堆人搶著回答..但這種較專業的.200點都沒什麼人回答..我真的覺得kimo要開一個專業+..知識+都一堆攪豬屎的= =

    2005-12-15 21:41:33 補充:

    multipart/form-data?

  • How do you think about the answers? You can sign in to vote the answer.
  • 2 decades ago

    我不了CGI是怎麼定義CHMOD,但是PHP除了你要把檔案上傳需要用到寫入(777)以外可以不用設定CHMOD。20點........這樣的回答好像有點簡單一 一||

    補充:

    sub.dat set.dat 檔還有data資料夾權限改成777,因為這個程式不是使用資料庫所以多了sub.dat set.dat 二個檔要設定777,不然只要data這個用來存上傳檔案的目錄要設定就好了,在php裡有關寫入動作的程式都需要將它設定成777不然你可以不必理會它。

    2005-12-13 23:18:35 補充:

    你這個要把上傳的那個目錄設定成(777)才能寫入檔案,會出現恐怖

    的[500]錯誤現象@@

    CHMOD我想應該是伺服器給程式的權限吧!!

    因為CGI算是瀏覽器和程式的橋樑,所以可以用任何的程式語言寫(印象中是這樣),至於它為什麼要設定CHMOD我想應該是程式問傳遞值的權限吧!!

    CHMOD我不!了,只能大概回答!!

    但是PHP可以不用設定,只有你要上傳檔案到那個目錄的那個目錄要以外,其它的你可以不用鳥它的設定!!

    2005-12-13 23:21:52 補充:

    忘了說!!

    你傳送的那個表單要用multipart/form-data來傳送不然會有錯誤的訊息!!(enctype="multipart/form-data")

    Source(s): 自己
Still have questions? Get your answers by asking now.