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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

2回答

3657閲覧

require_onceでファイルが読み込めない

xo_yo

総合スコア54

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2021/11/22 15:04

php

1<?php 2ini_set("display_errors", 1); 3error_reporting(E_ALL); 4require_once './classes/UserLogic.php'; 5 6$err = []; 7 8if(!$username = filter_input(INPUT_POST, 'username')) { 9 $err[] = 'ユーザ名を記入してください。'; 10} 11if(!$email = filter_input(INPUT_POST, 'email')) { 12 $err[] = 'メールアドレスを記入してください。'; 13} 14$password = filter_input(INPUT_POST, 'password'); 15 16if (!preg_match("/\A[a-z\d]{8,100}+\z/i",$password)) { 17 $err[] = 'パスワードは英数字8文字以上100文字以下にしてください。'; 18} 19$password_conf = filter_input(INPUT_POST, 'password_conf'); 20if ($password !== $password_conf) { 21 $err[] = '確認用パスワードと異なっています。'; 22} 23 24if (count($err) === 0) { 25 26 $hasCreated = UserLogic::createUser($_POST); 27 28 if(!$hasCreated) { 29 30 } 31 $err[] = '登録に失敗しました'; 32} 33 34?> 35<!DOCTYPE html> 36<html lang="en"> 37<head> 38 <meta charset="UTF-8"> 39 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 40 <title>ユーザ登録完了画面</title> 41</head> 42<body> 43<?php if (count($err) > 0) : ?> 44 <?php foreach($err as $e) : ?> 45 <p><?php echo $e ?></p> 46 <?php endforeach ?> 47<?php else : ?> 48 <p>ユーザ登録が完了しました。</p> 49<?php endif ?> 50<a href="http://localhost:8888/login/public/b.php">戻る</a> 51 52</body> 53</html> 54 55 56 57

php

1<?php 2ini_set("display_errors", 1); 3error_reporting(E_ALL); 4require_once './public/a.php'; 5 6 7 8class UserLogic 9{ 10 11 public static function createUser($userData) 12 { 13 $result=False; 14 15 $sql='INSERT INTO user (name,email,password) VALUES(?,?,?)'; 16 17 $arr=[]; 18 $arr[]=$userData['username']; 19 $arr[]=$userData['email']; 20 $arr[]=password_hash($userData['password'],PASSWORD_DEFAULT); 21 try{ 22 $stmt= connect()->prepare($sql); 23 $result = $stmt->execute($arr); 24 return $result; 25 }catch(\Exception $e){ 26 echo $e->getMessage(); 27 } 28 29 } 30 }

require_onceでファイルが読み込めません。

Warning: require_once(./public/a.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/login/classes/UserLogic.php on line 4

Fatal error: require_once(): Failed opening required './public/a.php' (include_path='.:/Applications/MAMP/bin/php/php7.4.21/lib/php') in /Applications/MAMP/htdocs/login/classes/UserLogic.php on line 4

↑のようなエラーが表示されます。どこを改善すればいいのでしょうか。

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

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

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

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

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

guest

回答2

0

自己解決

ファイルを同じにしてrequire_onceしたら解決しました。

投稿2021/11/23 04:45

xo_yo

総合スコア54

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

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

0

PHPでは、「実行したファイルのあるディレクトリが常に実行時のカレントディレクトリになる」という規則があります。

なので、/Applications/MAMP/htdocs/login/classes/UserLogic.php

PHP

1require_once './public/a.php';

していても、それは/Applications/MAMP/htdocs/login/classes/からの相対パスではなく、

PHP

1require_once './classes/UserLogic.php';

を実行したPHPファイルの場所からの相対パスになります。

もし/Applications/MAMP/htdocs/login/classes/UserLogic.phpからの相対パスとして'./public/a.php'を読み込みたいのなら

PHP

1require_once dirname(__FILE__) . '/public/a.php';

と記述する方法があります。

投稿2021/11/22 15:42

itagagaki

総合スコア8402

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

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

xo_yo

2021/11/23 03:29

require_once dirname(__FILE__) . '/public/a.php';と記述しましたが、同じようなエラーが発生してしまいます。
itagagaki

2021/11/23 03:31

最初に実行しているPHPファイルとa.phpの場所はどこですか?
xo_yo

2021/11/23 04:45

ファイルを別々にしていたのですが、同じファイル内でコードを保存してrequire_onceしたら読み込むことが出来ました。根本的な解決にはなっていないのですが、前に進むことが出来たので良しとすることにしました。相談に乗ってくださり、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問