1

私はapache2(Windows 7)でWebサイトをセットアップしていますが、DocumentRootは/ mysite/contentであると言います

しかし、並列ディレクトリ、たとえば/ mysite/libにもインクルードがあります

だから私のindex.phpファイルは言う:

require_once("/mysite/lib/myfile.php");

ただし、ドキュメントルートから取得するため、ファイルは見つかりません。だからそれは探しています

/mysite/content/mysite/lib/myfile.php instead of /mysite/lib/myfile.php

含まれているファイルがルートmysite/contentを参照しているため、ルート/mysiteを作成できません。これを回避する方法はありますか?

4

5 に答える 5

1

完全修飾パス名を使用することを含めると、phpファイルが必要なときにこれらの問題が発生することはありません。__DIR__ルートディレクトリの種類を確立し、必要なものを含めるために、定数をrealpathと組み合わせて使用​​できます。

ルートディレクトリがsomething/publicであり、something/libsからインクルードしたいとします。あなたがsomething/publicからindex.phpにいると仮定すると、次のようになります。

$rootPath = realpath(__DIR__ . "/../");
require_once $rootPath . "/libs/somefile.php";

これはあなたの問題を助けるはずだと思います。* nixシステムでは、libsディレクトリから読み取るためにlibsディレクトリへの権限を持つためにapacheが必要であるという事実に注意してください。

于 2013-03-05T17:48:23.530 に答える
1

php.iniファイルのインクルードパスを変更する必要があります

于 2013-03-05T16:01:48.363 に答える
0

この答えの本質は、現在のindex.phpの位置を見つけて、アプリケーションのベースパスを決定し、そのベースパスを使用して、アプリケーション内のあらゆるものに比較的簡単に対処することです。

phpから情報を取得できます。以下のパスの例はxamppサーバーのセットアップ用であり、(おそらく)異なる結果が得られる可能性がありますが、(私は)正しいでしょう。

$path = str_replace('\\','/',dirname(__FILE__));

これにより、index.phpのサーバー相対パスがわかります。例:'d:/ xampp / htdocs / mysite / content'

次に、「コンテンツ」を削除できます。

$path = substr($path, 0, strrpos($path,'/')+1);

これで、アプリケーションのルートは次のようになります。

'd:/ xampp / htdocs / mysite /'

これで、次のように言うだけでlibにアクセスできます。

require_once($path.'lib/myfile.php');

これがお役に立てば幸いです。

于 2013-03-08T08:28:21.877 に答える
0

これは、php.iniの問題である可能性があります。

次の内容のphpinfo.phpという名前のファイルをWebルートに作成します。

<?php
phpinfo();

何もありません。それを保存してからウェブブラウザにロードしてください。あなたは2つのことを探しています

  1. セーフモード
  2. open_basedir

safe_modeがオンの場合は、オフにします。open_basedirがnone以外の場合は、noneに設定します。なんらかの理由でphp.iniを編集できない場合は、次のコマンドを使用して.htaccessでこれを設定できる可能性があります。

php_admin_value open_basedir none

出典
http ://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-include-dir
http://www.php.net/manual/en/ini .core.php#ini.open-basedir

于 2013-03-08T13:41:55.223 に答える
0

呼び出す前に、次のようなものを使用できますrequire_once("myfile.php");

$base  = realpath(dirname(__FILE__) . '/../');
$paths = array(
    $base . '/mysite/lib',
    '.',
    get_include_path()
);

set_include_path(implode(PATH_SEPARATOR, $paths));
于 2013-03-11T16:51:09.500 に答える