ホームページ  >  記事  >  バックエンド開発  >  共有: PHP を要求する場合、または PHP に含める場合は相対パスを使用しないでください。

共有: PHP を要求する場合、または PHP に含める場合は相対パスを使用しないでください。

WBOY
WBOYオリジナル
2016-07-25 08:57:35968ブラウズ
  1. require_once('../../lib/some_class.php');
コードをコピー

この書き方の欠点: まず、指定された php インクルード パスを検索し、次に現在のディレクトリを検索します。 チェックされるパスが多すぎます。 スクリプトが別のディレクトリ内のスクリプトにインクルードされている場合、そのベース ディレクトリが他のスクリプトが配置されているディレクトリになります。

もう 1 つの問題は、スケジュールされたタスクがスクリプトを実行するとき、その親ディレクトリが作業ディレクトリではない可能性があることです。

したがって、最良のオプションは、たとえば次のような絶対パスを使用することです。

  1. define('ROOT' , '/var/www/project/');
  2. require_once(ROOT . '../../lib/some_class.php');
コードをコピー

上記のコードは絶対パスを定義しており、値はハードコーディングされています。

次に、改善により、パス /var/www/project も変更される可能性があります。そのため、毎回変更する必要がありますか? いいえ、次のように __FILE__ 定数を使用できます。

  1. define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME));
  2. require_once(ROOT . '../../lib/some_class.php');
コードをコピー

今すぐ、外部サーバーに移動するなど、どのディレクトリに移動しても、コードは変更せずに正しく実行されます。 つまり、pathinfo 定数と __FILE__ 定数は、移植可能なコードを実現するために使用されます。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。