2017-05-23 7 views
0

これらのアンカーhrefタグを絶対パスに設定する必要があります。なぜなら、フォルダにhtmlドキュメントがあると、たくさんのものが含まれているヘッダーが動作しないからです(場合によっては必要です)。PHPを使用してnavbarのHFSを絶対パスに設定するにはどうすればよいですか?

私が使用して提案しているいくつかの記事を見てきました:

$root = realpath($_SERVER['DOCUMENT_ROOT']);

または

$root = "http://" . $_SERVER['SERVER_NAME'];

最初のオプションは、エラーが発生しました:

localhost/:1 Not allowed to load local resource: file:///C:/xampp/htdocs/trips/index.php%7D

第2作戦

Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in C:\xampp\htdocs\MountainPlanner\includes\header.php on line 17

Warning: include(http://localhost/MountainPlanner/includes/db.php): failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\MountainPlanner\includes\header.php on line 17

Warning: include(): Failed opening ' http://localhost/MountainPlanner/includes/db.php ' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\MountainPlanner\includes\header.php on line 17

これは違いがある場合は、私はXAMPPを使用しています。

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

+1

は、のために$ _SERVERに依存しないでください。 '__DIR__'定数を使って、現在のファイルが入っているディレクトリから適切な相対パスを追加してください。 – Devon

+0

hrefsについて質問してもPHPにはエラーがあるので、あなたの質問は混乱します。ここに複数の問題があるようです。 – Devon

答えて

1

HREFナビゲーションバーのパス=システムパス

URLパス

を!それはHTML(CSS、JavaScriptなど)によって使用されます。 PHPはそれを心配する必要はありません(いくつかのストリーム関数を除いて)。

動的ベースパスを作成するには、私は

httpProtocol = !isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on' ? 'http' : 'https'; 

$base = $httpProtocol.'://'.$_SERVER['HTTP_HOST'].'/'; 

そして、hrefaタグに入れたときに、このスクリプトを使用しました:

<a href="<?php echo $base; ?>link" title="Link">Link</a> 

システムパス

にですサーバーがサーバー上のファイルを見つけるために使用するもの。 PHPはそれをinclude/requireのいずれかのファイル、または共有されているファイルに使用します。ストリーム関数もシステムパスとURLを使用できます。

私が見てきたように、あなたはシステムのパスについて尋ねています。私は、アプリケーションのパスを正規化するために、このコードを使用しました:

ini_set('include_path', 
    implode(
     PATH_SEPARATOR, 
     array_merge(
      array(dirname(__FILE__)), 
      explode(PATH_SEPARATOR , ini_get('include_path')) 
     ) 
    ) 
); 

その後、私のアプリケーションルートは自分のアプリケーションのための絶対パスとして使用することができます:

/Application/Require.php 
/Application/Script.php 
index.php 

それは任意のファイル上で動作します

require('Application/Require.php'); 
require('Application/Script.php'); 
+0

これは私の問題を非常に感謝したものです!私はまた、PHPのインクルードパスを変更して、私にとって大きな問題を簡素化することにしました。 –

+0

@SamuelColeようこそ –

0

設定ファイルまたは定数ファイルのどこか、またはファイルの1行目にも最初の行を設定します。

<?php $base_url = "http://localhost/mysite/"; ?> 

その後、あなたはこのようなhrefのリンクを作成することができます:それは、あなたのブラウザのアドレスに見るものだ

<a href="<?=base_url?>my-link">clickie</a> 
+0

このエラーで判断すると、OPはPHPインクルードを使用しています。 – Devon

0

$ _SERVERには、Webサーバーによって埋められたヘッダーが含まれています。信頼できず、ローカルまたはテスト環境でコードが実行されなくなります。 php.netから:

$_SERVER is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server. There is no guarantee that every web server will provide any of these; servers may omit some, or provide others not listed here. That said, a large number of these variables are accounted for in the » CGI/1.1 specification, so you should be able to expect those.

要約すると、サーバーに関する情報を提供するためにこれに頼らないでください。

PHPは、現在のファイルのファイルまたはディレクトリへの完全なパスを与える、__FILE____DIR__のマジック定数を提供します。

PHPの場合、これらの定数には、アクセスするファイルの相対パスを使用する必要があります。例えば

include __DIR__ . '/../file_in_previous_directory.php'; 
include __DIR__ . '/file_in_same_directory.php'; 
関連する問題