7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

un-T factory! XA Advent Calendar 2020Advent Calendar 2020

Day 8

【PHP】本番環境と開発環境が同じドメイン内で構築されている場合のファイルパス分岐処理

Posted at

はじめに

フロント実装者でもときどきPHPを用いた実装を担当することがあると思います。
今回は実際にあった例を用いて、対策を共有できればと思います。

今回のケース

・別の制作会社さんがPHPで作成・運営していたサイトを引き継いだ
・同じドメイン内に本番環境(ドメイン直下)と開発環境(例:ドメイン/develop)がある
・構成を完璧には引き継いでいない(もはや分かる人がいないそうな)ので、できるだけ改修せずにローカロリーで対応する

問題点

前述のとおり本番・開発でディレクトリが違うのだが、PHPでパスルート分岐などをしていないので、作業ファイルをまるっとコピペができない。
よって、開発環境で更新作業を行い、OKが出たら差分箇所を漏れなく本番環境用ファイルに反映させなければならない。大変な二度手間だ。やりたくない。ムキー

対応策

結論から書くと、パスルートを下記の記述に統一させることで対応しました。

<?php
// ドキュメントルートとディレクトリ構成を取得
$doc_root = $_SERVER['DOCUMENT_ROOT'];
$dir = explode('/',$_SERVER["REQUEST_URI"]);

// 開発環境(develop)配下のファイルにはパスルートに /develop を付与
if( $dir[1] == 'develop' ) {
	$current_dir = $doc_root . '/develop';
} else {
	$current_dir = $doc_root;
}

これをconfig.php とかにして読み込ませつつ、

<?php require($_SERVER["DOCUMENT_ROOT"] . '/develop/inc/header.php'); ?>

上記のように書かれていたインクルード部分を

<?php require($current_dir.'/inc/header.php'); ?>

と書き換えました。
これにより、記述の差異が無くなるので本番・開発用ファイルを1つに統合でき、二度手間は解消されました。

まとめ

どういう経緯でこのような構成になっていたのかは分かりませんが、設計の段階で運用の面倒さ、リスクはある程度予測できたと思うので、もうひと工夫しておいてくれればゴニョゴニョと思いました。
でもPHPは昔すこしだけ勉強していたが役に立った気がして、それはそれで良かったと思いましたまる

変なところや、こういうやり方あるよーっていうのがあればご教示いただけると大変ありがたいです。

参考にさせていただいたURL

https://www.php.net/manual/ja/function.set-include-path.php
https://webnetamemo.com/coding/php/201803016775

7
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?