9

別のスクリプトを使用してアクセスしたいファイルがありますfile_get_contents

アクセスしたいファイルはその上のディレクトリにあるので、使用していますfile_get_contents('../file.php?this=that')

しかし、戻ってきNo such file or directoryて、理由がわかりません。ファイルはそこにあります。

リモートではなくローカルファイルであることに関係があると思います。アイデアや回避策はありますか?

4

6 に答える 6

25
file_get_contents('../file.php?this=that')

http://....構文全体で完全な URL を作成しない限り、これは機能しません。file.php?this=thatPHP はこれを、現在のディレクトリの 1 レベル上の名前のファイルを取得する要求として認識します。相対 URL として扱わず、HTTP 要求を実行しません。代わりに、ローカル ファイルシステム ハンドラーを使用します。そこにあるかもしれませんが、ローカル ファイル システムには URL やクエリ パラメータの概念がないため、 を取り除いてをロードするだけでfile.phpはわかりません。したがって、「そのようなファイルエラーはありません」。?this=thatfile.php

于 2010-08-25T03:51:11.030 に答える
16

PHP.net によると、ローカル サーバーから file_get_contents 関数を使用してファイルを読み取る正しい解決策は、

// <= PHP 5
$file = file_get_contents('./people.txt', true);

// > PHP 5
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);

回避策を使用する代わりに役立つかもしれないと思った!

于 2013-07-09T19:24:08.207 に答える
4

その場所にファイルはありません。
適切なパスを使用する必要があります。

まず最初に、echo getcwd();現在のディレクトリ (そこから相対パスが構築されている) を確認するために a を実行します。
次に、このディレクトリに関連する file.php の場所を再確認します。
ファイル名の大文字と小文字を確認してください。機密情報である可能性があります。

この関数で php ファイルを開く理由を教えてください。

さて、答え:

$your_var = 1;
include('../file.php');
于 2010-08-25T02:01:44.060 に答える
4

I went ahead and used a few $_SERVER variables, combining them together to get the full URL and used it in file_get_contents:

file_get_contents('http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']) . '/../file.php?this=that');

That did the trick. Thanks for the help everyone.

于 2010-08-25T04:37:26.620 に答える
3

このように使用してください....

$string1=file_get_contents("c:/rose1/ram.txt"); echo $string1;

また $lines = file_get_contents('http://www.example.com/');

于 2011-12-16T06:32:04.037 に答える
1

ですかgetcwd() == dirname(__FILE__)

かつて、相対パスを使用すると、一部の共有ホストで常にエラーがスローされるという問題に遭遇しました。基本パスとして使用する絶対パスを使用dirname(__FILE__)することになり(ブートストラップで定数を設定し、その定数を基本パス値として使用する)、すべて正常に機能しました。問題をこれ以上掘り下げることはしませんでしたが、同じ問題に遭遇している可能性があります。私はここで推測しています。

于 2010-08-25T02:02:12.903 に答える