0

私はこの構造を持っています

controllers
- base.php
\ subfolder
  - home.php

home.php電話したい

require("../base.php")

しかし、ファイルが見つからなかったというエラーメッセージが表示されます。同じフォルダで動作します。

サブフォルダで動作させる方法はありますか?

4

4 に答える 4

2

フルパスの使用を試みることができます:

$origin = $_SERVER['DOCUMENT_ROOT'];
$home = $origin. "/controllers/home.php";
require($home);

しかし、それは長期的にはお尻の痛みであることを私は理解していますが、それは解決策です。私はこれまでそのような問題を抱えたことはありません。

しかし、おそらくこれはもっと役立つかもしれませんか?PHPインクルードファイル。エラーファイルが見つかりません

于 2013-03-22T20:17:08.400 に答える
1

試す:

require("/<full dir path>/base.php");

もう1つのヒント-Windowsの場合(Linuxにデプロイする場合は役に立たない)は、ダブルスラッシュを使用して「\\」をエスケープする必要がある場合があります。

それが機能しない場合は、おそらくアクセス許可の問題です。

編集:これを使用して、インクルードパスを取得します。

echo ini_get('include_path');

これにより、使用するパスがわかります。

于 2013-03-22T20:13:58.487 に答える
1

CodeIgniterはindex.phpスクリプト内から実行され、require関数のパスはパスに基づいて解決されindex.phpます。たとえばtest.php、CodeIgniterルートフォルダーに入れてrequire './test.php'からコントローラーから呼び出す場合test.php、問題なく含まれます。

質問に答えるには、__DIR__常に現在のスクリプトフォルダに設定されているphpマジック定数が必要です。答えは次のとおりです。

require __DIR__."/../base.php";

内から呼び出されますhome.php

編集:プラットフォームに依存しないソリューションは次のようになります:

require __DIR__.DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."base.php";
于 2013-03-22T20:46:23.013 に答える
0

この記事の執筆時点では、require(および同様の関数の)パスがindex.phpの場所に基づいているという点で、受け入れられた答えは正しいです。ただし、CodeIgniterにはindex.phpで定義された非常に便利な定数があり、アプリケーションのさまざまな部分へのパスを作成できます。

APPPATH定数は、コントローラー/ライブラリなどを指すのに最適です。

require APPPATH . 'controllers/base.php';

さらに良い解決策は、の形式でベースコントローラーを作成することですapplication/core/MY_Controller.phpMY_Controllerその後、ファイルを必要とせずにを使用してコントローラーを拡張できます。ベースコントローラに関するPhilの記事をチェックしてください。

于 2013-03-22T22:44:54.830 に答える