2012-02-27 8 views
1

私はZend_Form_Element_File()を使ってファイルをアップロードしています。 publicディレクトリにusersというディレクトリを作成しました。ファイルを読み込むと、ページが見つからないというエラーが表示されます。私はディレクトリをチェックし、許可がdrwxr-xr-xであることを確認しました。だから私はdrwxrw-rw-への許可を変更し、ページを再度ロードします。ページが正しく読み込まれます。しかし、ファイルをアップロードすると、エラーが再び発生します。だから私は最終的にdrwxrwxrwxに許可を変更し、すべてが適切に実行されます。 私の質問は、他の人たちがやっている普通のやり方をしていることですか?ディレクトリを実行可能にするのが奇妙だと分かった。 誰かが私が正しいことをしているかどうか説明することはできますか?私はZendフレームワークを学んでいます。ディレクトリを実行可能にするのは間違っていますか?

答えて

4

ディレクトリは、プログラムがそれを「入力」できる必要がある場合に実行可能にする必要があります。ディレクトリを入力するということは、基本的にはそのディレクトリの下のファイル/ディレクトリにアクセスすることを意味します。

フォルダへの "読み取り"アクセスを許可すると、その内容をリストすることができます。 "書き込み"アクセスはかなり明白です。

ただし、セキュリティ上の理由から、drwxrwx---770)で十分でないかどうかを確認する必要があります。多くの場合、あなたのユーザーとWebサーバーは共通のグループを共有します。その場合、「世界」にアクセスする必要はありません。

あなたと同じユーザーとしてスクリプトを実行する方が良いでしょう - それほど難しくないfastcgiを使用しますが、共有ホスティングをしている場合は、通常これを行うために必要なアクセス権がありません。

+1

実際には、実行可能なディレクトリでは、ディレクトリを参照してその内容を一覧表示することはできません。ディレクトリは、それを横断し、サブディレクトリ/ファイルにアクセスするために読むことができなければなりません。 –

+0

私はウェブサーバーがログインできず、権限を700以下にすることができないと主張します。あなたがwebserverとchownしている場合:webserverそれはうまくいくでしょう(私の経験で) – Woot4Moo

+0

@MarcB:それは間違っています。これは証明です:https://paste.aeum.net/show/47/ - これは内部のファイルにアクセスしませんが、 '.'と' ..'にアクセスすることはファイルにアクセスすることと同じです。 – ThiefMaster

0

通常、ディレクトリにアクセス許可を設定すると、ほとんどの場合、拡張ACLS経由のファイルにカスケード接続されます。私が直面する問題は、あなたが悪い考えである世界へのアクセスを許可したことです。ディレクトリへのアクセス権を必要とする唯一のユーザー(最大700人)があなたのWebサーバーになります。だから私はセキュリティを700に戻すことになるだろう。

+0

ほとんどのシステムでは、webserverユーザはシェル/ ftpユーザとは異なります。この場合、フォルダはウェブサーバ自身によって作成されていない限り、PHPスクリプトによって書き込み可能にするには '770'または' 777 'が必要です(あなたのftp/shellには読み込み専用になります) – ThiefMaster

+0

読み取り専用ftp/shellへのアクセス? – Woot4Moo

+0

あなたが何かを削除したい場合:はい。それに加えて、最初にフォルダを作成するには、親フォルダにグループ/ワールド書き込み権限を与えてから、PHPスクリプトからフォルダを作成した後に取り消す必要があります。難しいことではありませんが、まだ混乱です。 – ThiefMaster

関連する問題