2

私はこの問題を抱えており、デッドロックに達しました。デッドエンドに達したものは何でも試します。私の問題は次のようになります。

apache2 を実行している Fedora 9 マシンに Perl/CGI スクリプトをインストールしています。このスクリプトには、同じディレクトリに配置された構成ファイルがあり、この構成ファイルには 777 のアクセス許可があります。

スクリプトはファイルに書き込めません。読み取ることはできますが、書き込むことはできませんでした。ファイルは、apache を実行しているのと同じユーザーが所有しています。テスト用の小さな PHP スクリプトを作成し、同じフォルダーに配置しました。PHP スクリプトは読み取りはできますが、書き込みはできません。

私はここでとても絶望的で、問題をどこから始めればいいのかわからないので、正しい方法で私を導くための助けをいただければ幸いです。

編集:コマンドラインから編集用にファイルを開くことができます。アクセスできないのはapacheです

EDIT2: フォルダー階層 /var/www/cgi-bin/script の
アクセス許可は次のようになります
/var root 755
www root 755
cgi-bin root 755
script apache 755

編集:問題はselinuxにありました。私はそれを無効にしましたが、スクリプトはファイルにアクセスできました。

前もって感謝します

4

5 に答える 5

12

Apacheは、そのディレクトリへの書き込みを妨げるselinuxプロファイルなどで実行されますか?

于 2009-02-05T10:45:26.873 に答える
3

ユーザー apache は、親ディレクトリの 1 つに対する権限を持っていない可能性があります。ファイルを含むディレクトリまでのすべてのディレクトリで、少なくとも実行権限が必要です。

編集:そうです、これがプログラミングサイトであることを考えると、いくつかのコードが適切である可能性があります.

  1. 正しいディレクトリにいることを確認するために、相対パスではなく、テストするファイルへの絶対パスを使用してください。

  2. $! アクセス許可の場合は「アクセス許可が拒否されました」というエラーを出力する必要があります。次の方法で問題を出力できますか。

    open(ファイル、">/path/to/file/config.ini") || die "開けません: $!"; ...閉じる(ファイル);

于 2009-02-05T10:12:56.953 に答える
2

他のプロセスがファイルへの書き込みロックを持っている可能性がありますか?lsofを試して、誰が開いているかを確認してください。

于 2009-02-05T10:08:31.953 に答える
2

ディレクトリは、ウェブサーバーがそこにファイルを書き込むことを許可していますか?

于 2009-02-05T10:13:48.667 に答える
0

以前の投稿でこれに触れたことは知っていますが、繰り返すに値すると思います。この性質の問題について議論するときは、関連するコードと例外の出力を含めると役立ちます。I/O 操作が失敗した場合、$! には、操作が失敗した理由を説明するシステム エラー メッセージが含まれている必要があります。「うまくいかなかった」と言うだけでは、何も進みません。

于 2009-02-05T21:02:05.537 に答える