1
; Windows: "\path1;\path2"
include_path = “.;C:\xampp\php\PEAR;C:\xampp\php\Zend;C:\xampp\htdocs\rpg_historian;”

上記に、xamppサーバーのphp.iniにあるインクルードパスへのアドレスがあります。プロジェクトrpg_historianにネストされている「includes」というフォルダーのファイルをインクルードできるようにしたい。PHPで使用する場合-

<?php include('includes/header.php'); ?>

ページは正しく機能し、読み込まれます。ただし、インクルードの内部を送信するリンクをクリックすると、ページに次のように表示される位置になります-

> Object not found!
> 
> The requested URL was not found on this server. The link on the
> referring page seems to be wrong or outdated. Please inform the author
> of that page about the error.
> 
> If you think this is a server error, please contact the webmaster.
> 
> Error 404
> 
> localhost 10/06/12 09:46:58 Apache/2.2.21 (Win32) mod_ssl/2.2.21
> OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1

そして私のURLhttp://localhost/rpg_historian/includes/index.phpはindex.phpが置かれている場所ではないものになります。index.phpはrpg_historianのルートにあります。インクルードを簡単に設定できるシステムを設定するにはどうすればよいですか?見つけた手順を試しました -http://www.geeksengine.com/article/php-include-path.html

ただし、インクルードパスを設定した後でも、何らかの理由で。それでも正しく動作したくありません。フォルダからファイルに簡単にアクセスできる適切なPHPインクルードシステムを設定する方法を誰かに説明してもらえますか?私の理解では、PHPは、適切に設定されていれば、フォルダーをカスケードして「物事を見つける」のに十分インテリジェントです。

4

2 に答える 2

1

リンクを変更します:

<a href='../index.php' >また<a href='<?=$_SERVER["SERVER_NAME"]?>/rpg_historian/index.php' >

Windows のシステム変数は、PHP の include 関数とは何の関係もありません。

インクルード ファイルへの元の Windows パスが次の場合: C:\xampp\htdocs\rpg_historian\includes\header.php

そして、この内容<?php include('includes/header.php'); ?>のファイルはここから呼び出されています:C:\xampp\htdocs\

これを試すより:<?php include('rpg_historian/includes/header.php'); ?>

于 2012-10-06T14:56:35.240 に答える
1

インクルード パスは絶対パスのいずれかです。つまり、次のようになります。

include('C:/xampp/htdocs/rpg_historian/includes/header.php');

または相対的(現時点でのように)。相対的な場合は、それを含むファイルに対して相対的です。

現在、通常の解決策は、ドキュメント ルートに相対的に含めることです。

include($_SERVER['DOCUMENT_ROOT'] . '/rpg_historian/includes/header.php');

または、ある種のパターン ( front controllerなど) を使用してインクルードが一貫した方法で処理されることを保証するとinclude_path、パスの前にドットを付ける ( などinclude('./includes/header.php')) か、魔法の定数を使用することでディレクティブを克服でき__DIR__ます。

include(__DIR__ '/includes/header.php');

さて、これはすべてインクルードに関するものですが、問題はリンクの生成にあるようです (そうでなければinclude、HTML ハイパーリンクをたどるだけでディレクトリ内に移動することはありません)。これを回避するには、HTML リンクがローカル ( include) ディレクトリではなく、適切な場所を指していることを確認してください。

于 2012-10-06T15:04:13.603 に答える