joppot

コピペで絶対動く。説明を妥協しない

サーバ

apache2.4でvirtualhost毎に環境変数を定義しphpで使用する方法

投稿日:2017年1月16日 更新日:

Pocket

setapacheenvhtumb

概要

みなさんこんにちはcandleです。
今回はapache2.4でバーチャルホスト毎に環境変数を定義して、それをphp側で受け取る方法を紹介します。

例えば、wordpressで開発をしていて、
gitの管理下にパスワードやデータベース名を起きたくない時に、
apache側で定義してgetenvで読み込んで使うことができます。


前提

apache2.4
適当なphpが動くプロジェクト
適当なバーチャルホストの設定がある

もしもバーチャルホストの設定ができていない場合はこちらの記事を参考にしてください。
Macのhostsとapache2.4でvirtualhostを使ってプロジェクトごとにsubdomainを設ける

SPONSORED LINK


環境変数の設定

brewで入れたapacheの場合は以下のディレクトリにapacheの設定ファイルがあります。

/usr/local/etc/apache2/2.4/httpd.conf

このファイルを開き、まずはmodが有効になっているか確認します。

LoadModule env_module libexec/mod_env.so

を探してコメントアウトを外します。
commentinmodenv

次に、例えば以下のようなバーチャルホストがあったとします。

alicelocal

このの中に以下のように環境変数を記述すれば、設定できます。
試しにHELLO_WORDという環境変数を定義します。

<VirtualHost *:8080>
  ServerName alice.localhost
  DocumentRoot /Users/candle/apache/alice_blog
  SetEnv HELLO_WORD 'hello'

  <Directory "/Users/candle/apache/alice_blog">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

追記)

環境変数を任意のディレクトリ以下に適応したい場合は、<Directory>を使います。
これを使うと指定したディレクトリ以下に環境変数を適応することができます。
例えば、上の例ではDocumentRootは/Users/candle/apache/alice_blogですが、
これをapacheディレクトリ以下全てに環境変数を使いたい場合は以下のようにかきます。

<Directory "/Users/candle/apache">
  SetEnv GOOD_BYE 'bye'
</Directory>

するとalice.localhsotのバーチャルホストにきた時だけ、GOOD_BYE =’bye’が/Users/candle/apacheに適応されます。

apacheの設定は以上です。

php側で使う

結論から書くとapache側で設定したENVは「getenv」か「$_SERVER」で受け取れます。
上の例では以下のようになります。

getenv('HELLO_WORD');
$_SERVER['HELLO_WORD']

試しに表示してみましょう。

php側に適当なファイルを作って環境変数を受け取ってみます。

上のapacheの設定でしている通り、
ルートディレクトリは「/Users/candle/apache/alice_blog」なのでそこにinfo.phpを作成します。

touch /Users/candle/apache/alice_blog/info.php

中に以下のようなコードを書きます。

<?php
echo "getenv: ".getenv('HELLO_WORD');
echo "<br />";
echo "SERVER: ".$_SERVER['HELLO_WORD'];
echo "<br />";
echo "ENV: ".$_ENV['HELLO_WORD'];
?>

echozaemon

保存してアクセスしてみます。

showenvdata-1

どうでしょう。getenvと$_SERVERで取得できていますね。


まとめ

バーチャルホスト毎に環境変数を定義すれば、同一の環境変数名でもアクセスるサイトによって値を変更できるので便利ですね。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-サーバ
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

macにmemcachedをインストールする方法と動作確認

概要 memcachedはrailsやphpのセッションを保持しておく時に使うソフトというかサーバ的なものです。一般にSNSやログイン式のサービスを提供する時はセッションというのを持ちます。セッション …

apacheのmod_rewriteでphpのGETパラメータのurlを書き換える

概要 みなさんこんにちはcandleです。今回はphpでgetでパラメータを受け取る際のurlの書き換えです。 例えば、phpよくあるのがこのようなurlではないでしょうか。 http://local …

let’s encryptのssl証明書をvagrantのubuntuを使用して取得する

概要 みなさんこんにちはcandleです。2014年の後期にmozillaあたりが主導して、無料のssl証明書作ろうという動きがありました。ついに去年の12月にβ版がでたので、早速試してみました。 ち …

CentOS6.5にcakephp2.5.6をインストールする

概要 みなさんこんにちはcandleです。今回はCentOSのapacheサーバー上にcakephpを導入してみましょう。 前提 CentOSにapacheがインストールされている mysqlがインス …

td-agentでRails 4のproduction.logを取得する

English 日本語 概要 みなさんこんにちはcandleです。今回はrails 4のproduction ログをtd-agentで取得してみたいと思います。 数年前にも同じ記事を書いたのですが、説 …

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

twitter

スポンサードリンク

アーカイブ