ラボ > PHP:PATHやURL関連、FuelPHP

PHPで自分自身のPATH取得

自身のURL、サーバのPATH、リファラなど($_SERVER、__FILE__とか)

作成日:2017-11-22, 更新日:2020-10-15

URL関連

・「$_SERVER」を「var_dump()」すれば何が取れているかわかる

現在表示しているURL(パラメーターあり:REQUEST_URI)
$urlNow = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
現在表示しているURL(パラメーターなし:SCRIPT_NAME)
$urlNow = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["SCRIPT_NAME"];
GETパラメーター
$prmGet = $_SERVER["QUERY_STRING"];
GETパラメーター(連想配列で取得)
parse_str($_SERVER["QUERY_STRING"], $aryPrms); // 第2引数に結果を格納される
// var_dump($aryPrms); // $aryPrmsの中にGETパラメーターが連想配列で展開されている
リンク元
$urlRef = $_SERVER["HTTP_REFERER"];
ファイル名のみ or ファイル名なし
参照:「PHP URLやPATHからファイル名とファイル名抜きが欲しい

現在のURL絡み

現在表示しているURL
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
表示しようとしたURL1
$url = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
表示しようとしたURL2(※http_build_url()で組み立て)
$url = http_build_url('', array('scheme'=>$_SERVER['REQUEST_SCHEME'], path'=>$_SERVER['REQUEST_URI']));
表示しようとしたURL3(※http_build_url()で組み立て:「Scheme」を「http」にする(サーバの設定次第?))
$url = http_build_url('', array(path'=>$_SERVER['REQUEST_URI']));
表示しようとしたURLのドメイン差し替え(http_build_url()で組み立て)
$url = http_build_url('//example.com', array('scheme'=>$_SERVER['REQUEST_SCHEME'], path'=>$_SERVER['REQUEST_URI']));
表示しようとしたURLのSchemeとドメイン差し替え(http_build_url()で組み立て)
$url = http_build_url('https://example.com', array(path'=>$_SERVER['REQUEST_URI']));
FuelPHPで現在表示しているURL
$url = \Uri::current();

▼関係のある関数たち
・parse_url() - URLパース
・pathinfo() - ファイルパスからファイルに関する情報取得
・basename() - ファイルパスから最後の名前(ファイル名)を取得
・http_build_url() - URLの組み立て
・$_SERVER - リクエストなどの各情報

FuelPHPで・・・例えばルーティングで「'_404_' => 'error/404'」としたとき

▼存在しないページ「http://〇〇〇/hoge/unknown」にアクセスしたとき

echo \Uri::current();
// → http://〇〇〇/error/404

echo http_build_url('', array(path'=>$_SERVER['REQUEST_URI']));
// → http://〇〇〇/hoge/unknown

PATH関連

・「__FILE__」をゴニョゴニョする
・PHP5.3.0以上なら「__DIR__」が使える

自分自身の絶対PATH(ファイル名まで)
$pathMy = __FILE__;
自分自身の絶対PATH(ファイル名なし)
$pathDir = dirname(__FILE__);

// PHP5.3.0以上なら下記でもOK
// $pathDir = __DIR__;
自分自身のファイル名
$pathFile = basename(__FILE__);
自分自身のファイル名の拡張子無し
$pathFile = basename(__FILE__, '.php')
// 削除する拡張子を第2引数へ

現在表示しているページのIPアドレス

▼「gethostbyname()」がドメインからIPを調べてくれるヤツ

echo gethostbyname($_SERVER['HTTP_HOST']);