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

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

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

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

Q&A

解決済

1回答

622閲覧

require_onceでエラーになります。

ratezou

総合スコア62

PHP

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

0グッド

0クリップ

投稿2023/03/30 05:30

PHPの勉強中です。

以下のサイトで作成したDocker環境で
https://zenn.dev/garyuten/articles/85c7fe9cc00a5d

index.phpでrequire_once('./apps/Config.php');をすると、

error

1Warning: require_once(./apps/Config.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 9

というエラーが出ます。
何も指定していないのにvar/wwwというフォルダを参照してエラーになります。

どうすれば、require_once('./apps/Config.php');でconfigファイルにアクセスできるのでしょうか?

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

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

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

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

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

maisumakun

2023/03/30 05:38

apps/Config.phpは存在しますか?
ratezou

2023/03/30 05:42

確かに存在します。
maisumakun

2023/03/30 05:48

絶対パスは/var/www/html/apps/Config.phpで正しいですか?
ratezou

2023/03/30 05:50

絶対パスにvar/wwwは無いのです。 require_once('./apps/Config.php');すると、そういうエラーが出るのです。
maisumakun

2023/03/30 05:51

では、実行しているindex.phpはどこにあるのですか?
ratezou

2023/03/30 05:53

htmlフォルダの直下です。 質問内容のdockerの構築にはhtmlしかありませんでした。 var/wwwという記述は、 docker-compose.ymlに以下の一文があります。 - ./html:/var/www/html
ratezou

2023/03/30 05:57

同じフォルダにして、 require_once('./Config.php'); とすると、エラーになりません。
maisumakun

2023/03/30 05:58

> htmlフォルダの直下です。 appフォルダは「その中」に作りましたか?
ratezou

2023/03/30 06:10

いいえ、appフォルダはhtmlフォルダと同じレベルにつくりました。 なので、require_once(__DIR__ . '/../apps/Config.php');一つ上から降りてます。
ratezou

2023/03/30 06:12

appフォルダ内にはDBのパスワードなどをおく場合もあるので、publicフォルダに置くのは望ましくないと思いました。
maisumakun

2023/03/30 06:13

でしたら、そのフォルダもDocker内で見られるようにvolumeを設定してください。
ratezou

2023/03/30 06:16

ハードルが高いので、htmlの下にまとめるとします。
guest

回答1

0

ベストアンサー

何も指定していないのにvar/wwwというフォルダを参照して

エラーメッセージはそういう意味ではありません。/var/www/html/index.phpを実行中にエラーとなっていた、ということです。

投稿2023/03/30 05:48

maisumakun

総合スコア145183

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

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

maisumakun

2023/03/30 05:54

require_onceに相対パスを書いた場合、「カレントディレクトリから」となります。 書かれたファイルを基準にしたい場合、__DIR__などを利用して書く必要があります。
ratezou

2023/03/30 06:04 編集

やはりエラーになります。 require_once(__DIR__ . '/../apps/Config.php'); ↓ Warning: require_once(/var/www/html/../apps/Config.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 11 ディレクトリの記述の理解が危ういので、ドットは一つと二つの両方で試しました。
maisumakun

2023/03/30 06:12

./html:/var/www/htmlと設定している以上、html外のファイル・フォルダはDocker内から見えません。
ratezou

2023/03/30 06:13

なるほど・・・。 普通の環境とは違うので、そんなものなのですね。 htmlフォルダ内に作成するとします。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問