[解決済み] なぜ「Warning: require_once(config): failed to open stream: このコードを実行しようとすると、"Warning: require_once(config): failed to open stream: No such file or directory" と表示されるのですが?
質問内容
現在、自分専用のオンラインショップのプログラミングに取り組んでいます。
NetBeans IDE 8.0.2
を使って
PHP
. 私のシステムはWindows 7 32bitで、私のlocalhostはWampServer 2.5で動いています。私はTHCのコースに従っています。
https://www.youtube.com/playlist?list=PLbXVpMmmrntAvOYgkqhHW0hVu8dWUNyfz
ここまでは順調だったのですが、この動画で在庫を確保しました。S2{フレームワークの構築}」。クラスとメソッド(p6)。この人はコードをテストするためにサンプルテキストを画面にエコーするように言っているのですが、プロジェクトをlocalhostで実行すると、この2つのエラーメッセージが表示されます。
Warning: require_once(config): failed to open stream: No such file or directory in C:\wangwang.com on line 2
Fatal error: require_once(): Failed opening required 'config' (include_path='.;C:\phppear') in C:\wamp.wwwecommerce.php on line 2
autoload.php。
<?php
require_once('config');
function __autoload($class_name) {
$class = explode("_", $class_name);
$path = implode("/", $class).".php";
require_once($path);
}
Core.phpです。
<?php
class Core {
public function run() {
echo "Hello this is a print test";
}
}
index.phpです。
<?php
require_once'inc/autoload.php';
$core = new Core();
$core->run();
config.phpを使用します。
<?php
if(!isset($_SESSION)) {
session_start();
}
//site domain name with http
defined("SITE_URL")
||define("SITE_URL", "http://".$_SERVER['SERVER_NAME']);
//directory seperator
defined("DS")
||define("DS", DIRECTORY_SEPERATOR);
//root path
defined("ROOT_PATH")
||define("ROOT_PATH", realpath(dirname(__FILE__) .DS.".." .DS));
//classes folder
defined("CLASSES_DIR")
||define("CLASSES_DIR", classes);
//pages folder
defined("PAGES_DIR")
||define("PAGES_DIR", pages);
//modules folder
defined("MOD_DIR")
||define("MOD_DIR", "mod");
//inc folder
defined("INC_DIR")
||define("INC_DIR", "inc");
//templates folder
defined("TEMPLATE_DIR")
||define("TEMPLATE_DIR", "template");
//emails path
defined("EMAILS_PATH")
||define("EMAILS_PATH", ROOTH_PATH.DS. "emails");
//catalogue images path
defined("CATALOGUE_PATH")
||define("CATALOGUE_PATH", ROOTH_PATH.DS. "media" .DS."catalogue");
//add all above directories to the include path
set_include_path(implode(PATH_SEPERATOR, array(
realpath(ROOTH_PATH.DS.CLASSES_DIR),
realpath(ROOTH_PATH.DS.PAGES_DIR),
realpath(ROOTH_PATH.DS.MOD_DIR),
realpath(ROOTH_PATH.DS.INC_DIR),
realpath(ROOTH_PATH.DS.TEMPLATE_DIR).
get_include_path()
)));
解決方法は?
これを変更します。
require_once('config');
になります。
require_once('config.php');
//^^^See here file extension
(と同じディレクトリにあることを確認してください)。
autoload.php
そうでない場合はパスを変更してください)
EDITです。
または、次のように絶対パスでiを試してみてください。
require_once(dirname(__FILE__) . "/config.php");
EDIT 2:
設定ファイルからエラーメッセージが表示されるようになったので、インクルードされたものの、まだエラーがあるということです
一つ目はこれでしょう。
//directory seperator
defined("DS")
||define("DS", DIRECTORY_SEPERATOR);
//^^^^^^^^^^^^^^^^^^^ Typo must be: DIRECTORY_SEPARATOR
次はこちらです。
//classes folder
defined("CLASSES_DIR")
||define("CLASSES_DIR", classes);
//^^^^^^^ This isn't a constant so if it is a string put quotes around it
こちらも同じエラーです。
//pages folder
defined("PAGES_DIR")
||define("PAGES_DIR", pages);
//^^^^^
次のエラーはここです。
//emails path
defined("EMAILS_PATH")
||define("EMAILS_PATH", ROOTH_PATH . DS . "emails");
//^^^^^^^^^^ Typo must be: ROOT_PATH , you have one h too much
こちらも同じです。
//catalogue images path
defined("CATALOGUE_PATH")
||define("CATALOGUE_PATH", ROOTH_PATH.DS. "media" .DS."catalogue");
//^^^^^^^^^^
そして、このパースのあちこちに、6つのタイプミスがありますね。
//add all above directories to the include path
set_include_path(implode(PATH_SEPERATOR, array(
//^^^^^^^^^^^^^^ Typo must be: PATH_SEPARATOR
realpath(ROOTH_PATH.DS.CLASSES_DIR),
//^^^^^^^^^^ Typo must be: ROOT_PATH , you have one h too much
realpath(ROOTH_PATH.DS.PAGES_DIR),
//^^^^^^^^^^
realpath(ROOTH_PATH.DS.MOD_DIR),
//^^^^^^^^^^
realpath(ROOTH_PATH.DS.INC_DIR),
//^^^^^^^^^^
realpath(ROOTH_PATH.DS.TEMPLATE_DIR).
//^^^^^^^^^^
get_include_path()
)));
EDIT 3:
この2行を簡略化することができますし、私はrequireを変更して、ファイル自体を別のファイルにインクルードしても動作するようにしたいと思います このように。
autoload.php。
function __autoload($class_name) {
$class = explode("_", $class_name);
$path = implode("/", $class).".php";
require_once($path);
}
をこれに変更します。
function __autoload($class_name) {
$path = str_replace("_", "/", $class_name) . ".php";
require_once(dirname(__FILE__) . "/" . $path);
}
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。