質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

4回答

3144閲覧

ローカル開発環境とサーバ環境

ryohasegawa

総合スコア437

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2017/05/21 14:15

編集2017/05/23 13:29

PHPでプログラムを書いていて、

php

1// config.php 2<?php 3 4// エラー表示 5ini_set('display_errors', 1); 6// データベース接続設定 7define('DSN', 'mysql:host=**************;dbname=********'); 8define('DB_USERNAME', '******'); 9define('DB_PASSWORD', '************'); 10 11 12define('SITE_URL', 'http://' . $_SERVER['HTTP_HOST']); 13define('SITE_NAME'," | alpha"); 14define('HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/'); 15define('LOGIN', 'http://' . $_SERVER['HTTP_HOST'] . '/login.php'); 16define('SIGNUP','http://' . $_SERVER['HTTP_HOST'] . '/signup.php'); 17define('MUSIC_HOME_URL', 'http://' . $_SERVER['HTTP_HOST']."/music"); 18 19// ファイル読み込み 20require_once(__DIR__ . '/../lib/functions.php'); 21require_once(__DIR__ . '/autoload.php'); 22 23session_start(); 24

php

1<?php 2// test.php 3 4require_once($_SERVER['DOCUMENT_ROOT'] . '/../config/config.php'); 5?> 6<a href="<?= HOME ?>"><p>リンク</p></a>

リンクなどに使うと、ローカル開発環境ではきちんとページを飛ばしてくれるんですが、サーバーにアップして実行すると下のようなエラーが表示し、URLのところに/<br~からがはいります。

php

1Not Found 2 3The requested URL /<br /><b>Notice</b>: Use of undefined constant HOME - assumed 'HOME' in <b>/home/ryo/www/public/test.php</b> on line <b>6</b><br />HOME was not found on this server.

###環境
ローカル開発環境はMacで、PHPは7です。
サーバ環境はCentOS7でPHPは7です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/21 14:58

サーバーとローカルそれぞれの環境を教えていただけないでしょうか。
ryohasegawa

2017/05/21 15:04

具体的にはOSでよろしいでしょうか?
退会済みユーザー

退会済みユーザー

2017/05/21 15:05

OSとPHPのバージョンをお願い致します。
退会済みユーザー

退会済みユーザー

2017/05/21 15:11

ありがとうございます。あとPHPファイルの全文を載せていただくことは可能でしょうか。
ryohasegawa

2017/05/21 15:13

文字制限などで載せれません。あと、データベース関連の事もかいてあるので厳しいです。
退会済みユーザー

退会済みユーザー

2017/05/21 15:23

なるほど…。おもうところは、パスのあたりとインクロードあたりが怪しいなと思ったので。たとえば、Defineしたphpをaタグがあるphpから読み出していないとかってありませんか?
退会済みユーザー

退会済みユーザー

2017/05/21 15:23

もしそうでなかったらごめんなさい><
ryohasegawa

2017/05/21 15:39

呼び出してます。そこらあたりだけを追記します。
ryohasegawa

2017/05/21 15:43

require_once($_SERVER['DOCUMENT_ROOT'] . '/../config/config.php'); で呼んでますが、ローカル開発環境ではうまく動いているので、パスがズレてるということは考えてませんでした。実際そういう事ってありますか?
guest

回答4

0

そのエラーで検索すると理由がわかると思いますよ。

html

1<a href="<?= HOME ?><p>リンク</p></a>

の部分にエラーの原因がありますので、よくみてデバッグしてみてください。

投稿2017/05/21 17:46

imamoto_browser

総合スコア1161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/05/22 04:14

The requested URL /<br /><b>Notice</b>: Use で検索したんですけど、合ってますか?
ryohasegawa

2017/05/22 13:27

<a href="<?= HOME ?><p>リンク</p></a> を echo を省略しない形に書き直したんですが <a href="<?php echo HOME ?><p>リンク</p></a> こういう事じゃないんですかね?
退会済みユーザー

退会済みユーザー

2017/05/22 13:31

ダブルクォートが閉じ忘れてるとかでは?
ryohasegawa

2017/05/22 14:05

ありがとうございます。 <a href="<?= HOME ?>"><p>リンク</p></a> ですね。 これは、こちらのサイトに書き込んだ時の入力ミスでした。 実際コードはきちんと閉じられてました。 指摘ありがとうございます。
退会済みユーザー

退会済みユーザー

2017/05/23 00:31

検索しなくても、機械翻訳するだけで分かる気がする。
ryohasegawa

2017/05/23 13:36

HOME was not found on this server. と言われているんですが、config.phpで定義してあるように、HOMEに飛ぶと思うんです・・・ ローカルでも動きますし・・・
guest

0

ベストアンサー

現象をまとめます。

エラーメッセージ
質問にある通り、test.php(現象再現用のスクリプト),config.phpの利用で、

Use of undefined constant HOME

のエラーが発生

変数の正常性の確認
test.phpの中で、var_dump(HOME)を実行すると、意図した内容http://hogehoge/が表示される。

スクリプトの正常性の確認
ローカル環境では、<a href="<?= HOME ?>"><p>リンク</p></a>=><a href="http://hogehoge/"><p>リンク</p></a>と正常に記述される。


上記の変数の正常性の記述が曖昧ですが、私の解釈が正しいとすると、エラーメッセージと内容が合致しません。
現象は上記で正しいでしょうか?

変数の正常性の確認方法が、config.phpでの確認であったのであれば、config.phpが読み込めていないという単純なエラーなんですけどね。。。

投稿2017/05/24 00:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/05/24 11:25 編集

var_dump(HOME); で確認を今一度してみたところ、サーバ環境では、Use of undefined constant HOME - というエラーが出ました。 これは、定義されていない=読み込んでいない という事ですよね?(ローカルではきちんと動作確認行いました)
退会済みユーザー

退会済みユーザー

2017/05/24 11:50 編集

意図した config.php を読んでない可能性が高いですね。 多分別の config.php を読んでいるんじゃないかなぁ。 $_SERVER['DOCUMENT_ROOT'] がローカルと違うために発生した現象だと思います。 一般的にディレクトリ構成は変わらないので、__DIR__ を使用して、ファイルを指定するのが分かりやすいかと。
ryohasegawa

2017/05/24 12:23

返信ありがとうございます。 require_once(__DIR__ . '/../config/config.php'); こう書き換えました。おなじく、ローカルでは動くんですが、サーバでは全く同じエラーで、呼び出されていないらしいんです。 var_dumpで調べると、その行で「定義されていない定数を呼び出した」的なエラーが出ます。
退会済みユーザー

退会済みユーザー

2017/05/24 12:54

require_once(__DIR__ . '/../config/config.php'); の代わりに echo __DIR__ . '/../config/config.php' で該当のファイルの全パスを表示した後、その全パスで config.php 開いてみて下さい。 多分、内容が意図したモノと違う内容になっている気がします。
ryohasegawa

2017/05/24 13:10

/home/ryo/www/public/../config/config.php という結果が返ってきました。 public というファイルがドキュメントルートです。 そこを一つ抜けてpublicと同じ階層にあるconfigの中のconfig.phpを呼び出しているんですが、「該当のファイルの全パスを表示した後、その全パスで config.php 開いてみて下さい。」の開くとは何処でどのように開いたらよいでしょうか? ブラウザでは、ドキュメントルート外にあるので開けません。
退会済みユーザー

退会済みユーザー

2017/05/24 13:25

例えば、 vim /home/ryo/www/public/../config/config.php 等、コマンドラインで打って開いてみて下さい。
ryohasegawa

2017/05/24 14:06

SSHでサーバにアクセスし、 sudo vim home/ryo/www/public/../config/config.php を実行しました。 すると、vimでファイルを開くことができました。
退会済みユーザー

退会済みユーザー

2017/05/24 14:27

記述された内容が少し違いますね。。。転記間違いですかね?こういうのは重要なので、注意してコピペして下さい。 vim /home/ryo/www/public/../config/config.php sudo vim home/ryo/www/public/../config/config.php home の前に / がないです。 あと、中身は正しく意図したものでしたか?
ryohasegawa

2017/05/24 14:31 編集

sudo vim /home/ryo/www/public/../config/config.php サイド実行しました。 表示されたファイルは、意図していたファイルです。
退会済みユーザー

退会済みユーザー

2017/05/24 14:39

うーん。不思議ですね^^; では、その開いた config.php の define('HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/'); のすぐ下に echo HOME; と記述して、test.php をブラウザで確認して下さい。 HOME の内容が表示されますか? あ、その前に、test.php の echo __DIR__ . '/../config/config.php' は require_once(__DIR__ . '/../config/config.php'); に戻しておいて下さい。
ryohasegawa

2017/05/24 14:53

表示しませんね。 一度、Apacheの再起動をかけてみましょうか?
退会済みユーザー

退会済みユーザー

2017/05/24 14:59

では、config.php でエラーを起こして下さい。 例えば、先程の echo HOME; を hoge に変えるとか。 エラーが発生しなければ、読み込めていません。
ryohasegawa

2017/05/24 15:00

Apacheの再起動+ファイルの再アップをしたら読み込まれて実行されました・・・ なぜでしょう?
退会済みユーザー

退会済みユーザー

2017/05/24 15:08

直ってしまったのであれば、こちらでは何とも。。。 履歴管理していれば、差分が見れると思いますが、分からないでしょうね。 事例として興味があったんですが、原因不明のままとか残念です。
ryohasegawa

2017/05/24 15:12

解決?できて良かったです。 ありがとうございました。
guest

0

1つ目のPHPがconfig.phpで2つ目のphpがheader.phpでいいんですかね?
違ってたらいけないのでファイル名も記述お願いします。

上記前提ですが、Notice出てるのがheader.phpのline 10なんですよね。提示のコードだと4行目に見えますが、前後省略されてますか?
なるべく省略されない方がいいですよ。今回は違うかもしれませんが、実は省略した部分に原因が潜んでいたってこともありますので。
「データベース関連の事もかいてあるので厳しいです。」とありますが、Noticeエラーメッセージのパスをそのまま書いてしまってるところとかちょっと危ないかなとも思いますし・・・
データベース関係のところはXXXXXとか伏字にすればいいのかなと思います。

投稿2017/05/23 00:12

編集2017/05/23 00:15
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/05/23 00:21 編集

ちょっと下記お試しください。 ・define('HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/');をheader.phpに書く(configをrequireしてる前と後で1パターンずつ)  Constant HOME already definedと出ればdefineが通ってることになります(二重定義となるので) ・config.phpのdefine直後に echo HOMEをしてみる。(実行するのはconfig.php、header.phpそれぞれ)
ryohasegawa

2017/05/23 13:32

解答に対するコメントです。 質問を編集させていただきました。 それとheader.php のエラーの出る箇所(<a href="<?= HOME ?>"><p>リンク</p></a>)だけを完結に実行するため、test.phpという新たなファイルにししました。 そのコードとエラーコードを書き換えました。 これでわかりやすくなったと思います。 ちなみに、ローカル環境では、リンク先にうまく飛びます。
m.ts10806

2017/05/23 21:43

CENTOS環境が準備できてないので何とも言えませんが、short_open_tagが有効になってないかも確認してみてください。 http://www.over-rabbit.com/pc/pc-diary/228 ↑のようにサーバ(php.ini含めて)環境の設定くらいしか思いつかないですね。 「HOME」という名前が名前なので予約語的な感じでサーバー上で使えない可能性もありますし。「HOME」以外の名称にしてみても通るか確認してみてください。(多分これ以上のアドバイスが難しいです・・)
guest

0

php

1<?php 2echo realpath($_SERVER['DOCUMENT_ROOT'] . '/../config/config.php'); 3?> 4```とやって、出たパスにちゃんと`config.php`が存在するか確認してみましょう。 5あるとすると、その中で、`HOME`という定数が定義されているか確認しましょう。

投稿2017/05/22 13:59

shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shi_ue

2017/05/22 14:00

あ、でもファイルが無かったらエラーになるか。requireだもんね。
ryohasegawa

2017/05/22 14:52 編集

/Users/hasegawaryou/Dropbox/alpha/config/config.php ときちんとパスが表示されました。 ファイルの呼び出しは問題ないようです。
ryohasegawa

2017/05/24 11:23 編集

それと、<?php var_dump(HOME); ?> を実行してみたら、きちんと、string(24) "http://192.168.12.9:9090" データは受け取ってます。(ローカル内では動くのでそうでしょうけど)
shi_ue

2017/05/22 15:27

ん?HOMEは定義されていたんですか?
ryohasegawa

2017/05/23 13:33

config.phpで定義してあり、それを読み込んでいるので定義はされているはずです。 実際、var_dumpで見てデータも表示されるので・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問