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

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

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

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

PHP

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

Q&A

解決済

2回答

9873閲覧

PHPでincludeファイルが読み込みできなくなる現象

shiba0917

総合スコア10

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

PHP

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

0グッド

1クリップ

投稿2017/12/07 21:13

編集2017/12/07 21:27

PHPでincludeファイルが読み込めなくなる現象があり困っています。

下記のようにファイルが3つあるとして、上のaaa.phpとbbb.phpのincludeファイルが読み込めたり、読み込めなかったりする現象が起きています。

ログを確認したのですが、読み込めなかった時はファイルが見当たらないというエラーが吐かれていましたが、サーバー上にはファイルは確かにあるのです。

読み込み元ファイル aaa.php bbb.php ccc.php は全部同じで include するファイル名だけが違います。

そんなことないとは思うのですが、
自分が疑ったのはincludeするファイル名が「common-数字」になってる点です。数字は日付を表しているのですが、一番大きな数字は問題なく読み込めているようなんです。

ファイル名の付け方に問題があるのかのそれ以外かの切り分けをしたいので、このような現象に遭遇した方がいれば教えてください。

aaa.php
include(“common-170906.php”);

bbb.php
include(“common-170912.php”);

ccc.php
include(“common-171204.php”);

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/12/07 23:21

common-yymmd.php build日付ですな。
yambejp

2017/12/08 00:13

とりあえずクォーテーションに全角文字をつかって例示するのはやめたほうがいいと思います
退会済みユーザー

退会済みユーザー

2017/12/09 04:43

バックアップファイルだとおもって削除されたのが有力候補だろうなぁ
guest

回答2

0

ファイル名が理由でincludeできないということはないはずです。

ファイルはinclude_pathを探索されますが、読み込み元のaaa.php等と同じディレクトリにあるのですか? その場合、include_pathに'.'が含まれている必要がありますが、これはセキュリティ上好ましくない設定です。

思うに、別ディレクトリにアップロードしているcommon-171204.phpがincludeされているのではないでしょうか。

投稿2017/12/07 23:20

chokojori

総合スコア971

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

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

shiba0917

2017/12/08 21:29

読み込み元ファイル(aaa.phpなど)と同じ階層にcommon_filesというディレクトリが切ってあります。そのcommom_filesディレクトリ内にincludeファイルがあります。
chokojori

2017/12/08 22:45

それで、common_filesディレクトリはinclude_pathに含まれているのですか? include_pathを確認するためには、phpinfo()を使うのが確実だと思います。 たとえば以下が参考になるかと思います。 http://www.shinbo.org/archives/2918
chokojori

2017/12/13 22:37

私が疑っているのは、 あなたはcommon_filesにあるファイルをincludeしているつもりになっているが、 実際には別のディレクトリにアップロードしたり、削除したりしているファイルがincludeされていて、 質問にあるような症状になっているのでは? ということです。
shiba0917

2017/12/18 01:15

アドバイスいただいたのにもかかわらず、遅くなりましてすみません。 include のパス指定が正しくなかったのが原因でした。 (1)include("/common_files/common-170906.php"); 存在確認できず (2)include("./common_files/common-170906.php");  存在確認できる (3)include(__DIR__."/common_files/common-170906.php");  存在確認できる (1)のように書いてしまったためでした。ただし(1)でも表示できていたのでそれが不思議です。
chokojori

2017/12/18 01:39

質問文とコードが違いますね...
shiba0917

2017/12/18 02:16

すみません。上記(1)の書き方で表示ができていたので、表示ができなくなったとき そこではないと決めつけてしまったのが悪かったと反省しています。 これからは先入観を排除して、もっと正確に質問をしようと思います。 お手数をお掛けしました。
guest

0

ベストアンサー

とりあえず、ファイルの所在と更新日時を確認するところからですかね

PHP

1$filename = 'common-170906.php'; 2if (file_exists($filename)) { 3 echo date ("Y/m/d H:i:s", filemtime($filename)); 4}

投稿2017/12/08 00:35

yambejp

総合スコア114779

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

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

shiba0917

2017/12/08 21:21

ありがとうございます。月曜日以降に確認してみます。
shiba0917

2017/12/18 01:16 編集

アドバイスいただいたのに遅くなりましてすみません。 確認した結果、分かりました。パスの指定の仕方が悪かったようです。 include("/common_files/common-170906.php"); のように書いてしまっていたのが原因だと思います。 ファイルの存在確認ができなかったからです。 include("./common_files/common-170906.php"); か include(__DIR__."/common_files/common-170906.php"); のように書けばファイルの存在確認ができました。 ただ、include("/common_files/common-170906.php"); と書いてもファイルは存在していないが、 表示されているときがあったので、読み込みされていると勘違いしていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問