1

次のようなファイルまたはフォルダーを呼び出そうとしています:

require('/functions.php');
$a = '/folder/';

しかし、それは機能せず、「ストリームを開くことができませんでした」というエラーが表示され続けます.php.iniから「doc_root」を変更できることはわかっていますが、それが正しいかどうか、正確に何を変更するかはわかりません.

誰でもplsを提案できますか?

ありがとうございました。

------更新----- fopenを使用してサブフォルダー内にファイルを作成しようとしています:

$ourFileName = "/folder/subfolder/index.php"
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");

しかし、リンクを構築するために同じ変数 $ourFileName を使用したいので、 $_SERVER['DOCUMENT_ROOT'] を使用したくありません

------更新------ さらに明確にするために、機能しないコードを次に示します。

<?php 
$ourFileName = '/jobs/';
$ourFileHandle = fopen($ourFileName.'index.php', 'w') or die("can't open file");
fwrite($ourFileHandle, 'hello world');  
fclose($ourFileHandle); 
?>
4

3 に答える 3

4

how about using : $_SERVER["DOCUMENT_ROOT"]

于 2011-01-16T02:59:50.217 に答える
3

最適なルート パスを取得するには、ビュー ファイル (index.php) で定数を定義し、クロス プラットフォーム互換にする必要があります。

PHP とマルチプラットフォーム アプリケーションで何年も働いた後、これを行うための最良の方法は、次のネイティブ PHP 関数と定数の組み合わせであることがわかりました。

  • 定義
  • str_replace
  • ディレクトリ名
  • __FILE__

関数を使用する理由は次のとおりです。

  • define を使用する理由は、ドキュメント ルートがグローバル スコープ内にとどまるようにするためです。
  • 理由str_replaceは、スラッシュをクロスプラットフォーム互換に変更するためです
  • その理由dirnameは、ルート ビュー ファイルへの相対パスを支援するためです。
  • の理由__FILE__は、ビュー ファイルを検出するためです。dirname

__DIR__PHP5 に使用することもできますが__FILE__、以前のバージョンの Windows をサポートするため、より優れています。

完全に組み合わせると、ビュー ファイルへの有効な相対パスが得られます。

define("ROOT_PATH",str_repalce("\\","/",dirname(__FILE__)));

これにより、末尾のスラッシュなしでインデックス ディレクトリへの完全な相対パスが生成されます。次に、次のようにファイルを含める必要があります。

require_once ROOT_PATH . "/system/classes/some.class.php";

Windows では/との両方\が有効であり、他のオペレーティング システムでは のみが有効である/ため、通常/、ディレクトリ セパレータとして常に を使用してアプリケーションをビルドする必要があります。

于 2011-01-16T03:11:14.760 に答える
0

Unless your functions.php file is in the linux system root, that path will not work, as the first / character means "all the way to root".

If functions.php is in the same directory as your quoted file, try this:

$dir = dirname(__FILE__);
$functions_absolute_path = $dir . '/functions.php';
require($functions_absolute_path);
于 2011-01-16T03:02:26.040 に答える