2

このDagon Design PHPフォームを使用して、地元の非営利出版物が読者が写真を送信できるようにしようとしています。「メーラー」部分は機能していますが、通知は正常に機能していますが、「ファイルをフォルダーに保存する」部分が機能していません。

フォーム ページで、作成者は「ディレクトリには書き込み権限が必要です」と言っていますが、「誰」がそのフォルダに書き込んでいるのかわかりません。この PHP スクリプトは、私のサイトに何かを保存するときに「所有者」と見なされますか? または、所有者、グループ、その他に保存権限を許可する必要がありますか?

スクリプトが写真を保存しない理由はわかりませんが、ここから始めるのがよいようです。答えを求めてスタックを調べ ましたが、ほとんどの質問はフォルダーの作成/許可に関係しているようです。

私が不器用に構築しようとしているページはhereです。

4

4 に答える 4

1

ジョンがすでに言ったように、あなたは誰にでも書き込みアクセスを許可したくありません。

また、(ホスティングによっては)suEXECのようなものが使用されている可能性もあります。これにより、PHPスクリプトがWebサーバー以外のユーザーとして実行されます Dunhamzzzによる報告)。

私の意見では、おそらくあなたの最善のアプローチは、whoamiを呼び出すスクリプトです。

passthru('whoami');

または、次のことを試すこともできます。

var_dump(posix_getpwuid(posix_geteuid()));

これにより、システム情報が世界中に提供されることに注意してください。使用したスクリプトは削除してください。

次に、質問で正しく主張したように、それはファイルのアクセス許可である可能性があります。

CLIアクセスがある場合は、そのように安全にアクセス許可を更新できます(最初のコマンドでグループを取得します)

id -n -g <username>
chmod 770 <directory>
chown <username>:<group> <directory>

(上記の「chown」コマンドの前に「sudo」を付けるか、「root」として実行する他の手段を見つける必要がある場合があります...行き詰まった場合は返信してください。)

コマンドラインを実行するためのアクセス権がない場合は、おそらく(S)FTPクライアントなどを介してこれを実行しているはずです。その時点でオプションが少し広範になるのではないかと思います。それを理解する必要があります(または使用しているクライアントに返信する必要があります!)

いつものように、YMMV。

最後に、これが独自のコードである場合、人々はある時点でPHPスクリプト(またはそれ以上)をアップロードしようとすることを覚えておいてください。そのディレクトリにパブリックURLを介してアクセスできる場合...あなたは最大のセキュリティホールを開いています!(.htaccess、またはドキュメント以外のルートの場所はあなたの友達です。)

于 2012-09-04T13:49:00.940 に答える
0

ディレクトリのパーミッションを Web サーバー (おそらく Apache、nginx、または類似のもの) のパーミッションに設定する必要があります。それが PHP を実行しているためです。

を使用して apache ユーザーをすばやく見つけることができますps aux | grep apache。次に、アップロード ディレクトリの権限をそのユーザーに設定します。次のようになります。

chown -R www-data:www-data images/uploads
于 2012-09-04T13:17:29.497 に答える