1

パスに問題があり、Webサーバーを参照してfopenします。

public / dan / new / apps / lovescopes/thisfile.phpにファイルを保存しました。

thisfile.phpは、 fopen "x +"を使用して、 public / internalServer / lovescopes / xml/2009/12に新しいファイルを作成します。

これで、fopenが次の行にエラーが表示されます。

  1. パスを相対的なものとして入力../../../../internalServer/lovescopes/xml/2009/12すると、PermissionDeniedエラーが発生します。

  2. /public/internalServer/lovescopes/xml/2009/12「ストリームを開くことができませんでした:そのようなファイルまたはディレクトリはありません」のように絶対パスを入力すると、

相対パスと絶対パスのどちらを使用する必要があるのか​​、まだ混乱しています。私はftp_nlistを持っていて、それは#2で完全にうまく機能しました。Fopenは同じですか?

また、同じパスを指していると思われるさまざまなエラーメッセージがあるので、どちらの方法で正しく実行しているのかわかりません1または2?

4

4 に答える 4

6

相対パスでrealpath()を使用してみませんか。

また、アクセスが拒否された場合は、アクセスしようとしているフォルダーが、WebサーバーまたはPHPプロセスを実行しているユーザーが読み取りおよび/または書き込みできないことを示します。

さらに、変数から/へのファイルの読み取り/書き込みを一度に行う場合は、file_get_contents()およびfile_put_contents( )を使用することをお勧めします。

于 2009-12-23T20:04:00.673 に答える
3

PHP 関数自体は絶対でも相対でもなく、パスに依存します。

発生しているエラーは両方とも、アクセス許可または存在のいずれかの特定のパスに関連しているため、存在し、アクセスできることがわかっているパスを取得して、それを試すことをお勧めします (現在のディレクトリが適切な場所である可能性があります)。読み取りアクセス権があることを確認するためだけに、ファイルとパスを一時的に chmod することもできます。結果とエラーを印刷します。

fopen("public/dan/new/apps/lovescopes/test.php");
fopen("./test.php");

どちらもエラーを返さない場合は、パスの問題であることがわかります。

また、PHP プロセスはユーザーとは異なる権限を持っている可能性があるため、注意してください。

于 2010-04-16T02:42:14.847 に答える
3

また、関数が呼び出されているファイルに対して相対パスが指定されていることを確認してください(実際のコードがあるとは限りません)。
PHP ではgetcwd()(get current working directory; manual ) を使用して、相対パスの基になるディレクトリを特定します。

于 2013-09-10T06:34:23.547 に答える
0

スクリプトにそのファイルにアクセスする権限があることを確認する必要があります

于 2009-12-23T20:05:45.260 に答える