私のウェブサイトのほとんどは私のルートディレクトリにあります。そして、そのディレクトリには「css」、「functions」、「images」フォルダがあります。 index.phpまたはその他のルートファイルにphpファイルを含めると、すべて正常に機能します。それは正常に含まれ、正常に実行されます。
ただし、フォルダ「ブログ」を作成すると問題が発生します。したがって、これはまったく新しい、CMSと独自の「ルート」ファイルを含む別個のルートフォルダです。そして、メインルートディレクトリのcssまたはメインルートディレクトリの「functions」フォルダのいくつかのphpファイルを含めようとします。すべてが壊れます。 ../functions/myfile.com
として含める必要があることを知っています。ただし、このファイルには他のファイルが含まれているため、正常に機能せず、他のファイルを適切に含めることができません。
この問題を解決する方法はありますか?
$_SERVER['DOCUMENT_ROOT']
を使用して、各サイト内から root にアクセスできます。 テストのみのために、パスをエコーアウトして、それが機能していることを確認することができます。正しい方法で行う場合物事のローカルサーバーパスを表示したくない includes および requires。など
サイト1
echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/';
サイト1の下に含まれるもの:
echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
サイト2
echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
アクセスする実際のコードには、site1site2の中から含まれます:
include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
document root
およびroot
スラッシュを除外してアクセスしようとすると、クエリを実行するファイルの相対的な path のみを使用します。
//(not as fool-proof or non-platform specific)
include('../includes/file_from_site_1.php');
インクルードパスは、サイトのフロントエンド(ライブ)のコードにはどこにも存在しないため、セキュリティで保護して、運用環境のみで使用する必要があります。
さらに、サイト自体のURLについては、ドメインに関連するURLにすることができます。ブラウザはどのページを見ているかを知っているので、残りは自動的に埋められます。代わりに:
<a href='http://www.__domain__name__here__.com/contact/'>Contact</a>
以下を使用する必要があります。
<a href='/contact/'>Contact</a>
優れたSEOを実現するには、ブログのURLが他のドメインに存在しないことを確認する必要があります。そうでない場合、重複サイトとしてマークされる可能性があります。そうは言っても、 robots.txt
ファイルの行を[〜#〜] only [〜#〜]site1:
User-agent: *
Disallow: /blog/
IPアドレスを調べる に次のコードスニペットを含めます。
function is_dev(){
//use the external IP from Google.
//If you're hosting locally it's 127.0.01 unless you've changed it.
$ip_address='xxx.xxx.xxx.xxx';
if ($_SERVER['REMOTE_ADDR']==$ip_address){
return true;
} else {
return false;
}
}
if(is_dev()){
echo $_SERVER['DOCUMENT_ROOT'];
}
ISPが [〜#〜] ip [〜#〜] を変更した場合、DCHP動的IPを使用している場合と同様に、そのファイルのIPを変更して結果を確認する必要があります。 thatファイルをインクルードに配置し、デバッグのためにページ上でそれを要求します。
ブラウザ コンソールログ の使用などの最新の方法で問題ない場合は、代わりにこれを実行し、ブラウザのデバッグインターフェイスで表示できます。
if(is_dev()){
echo "<script>".PHP_EOL;
echo "console.log('".$_SERVER['DOCUMENT_ROOT']."');".PHP_EOL;
echo "</script>".PHP_EOL;
}
私があなたを正しく理解している場合、あなたは2つのフォルダを持っています。1つは別のフォルダにあるファイルにinclude
したいPHPスクリプトを格納しますか?
この場合、正しい道をたどる必要があります。フォルダーが次のように設定されていると仮定しましょう。
root
includes
php_scripts
script.php
blog
content
index.php
これが提案されたフォルダ構造であり、「Script.php」ファイルを「index.php」フォルダに含めようとしている場合、次のように含める必要があります。
include("../../../includes/php_scripts/script.php");
私のやり方は視覚的です。 index.phpにマウスポインターを置いて(ファイル構造を見て)、フォルダーを上に移動するたびに、別の「../」と入力します。ダウンを開始したいこと。その後は、通常のフォルダー階層になります。
上記の回答のどれも私にとってこの問題を解決しませんでした。私は次のようにそれをしました(UbuntuサーバーでLaravel):
<?php
$footerFile = '/var/www/website/main/resources/views/emails/elements/emailfooter.blade.php';
include($footerFile);
?>
相対パスを使用しないようにしてください。 DocumentRootサーバー変数をグローバル変数に割り当て、そこから絶対パスを構築する汎用インクルードを使用します。または、大規模プロジェクトの場合、PSR-0 SPLオートローダーの実装を検討してください。