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

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

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

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

Q&A

解決済

1回答

520閲覧

PHPでハッシュ化すると500エラーになります

sususu

総合スコア99

PHP

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

0グッド

0クリップ

投稿2019/04/06 07:09

表題の件の通りPHPでパスワードをハッシュ化すると500エラーが起こってしまします。
どなたか原因を教えていただけませんでしょうか?

該当コードは下記create_user.phpです。

<?php $dsn = 'mysql:dbname=xxxxxx'; $user = 'xxxxxx'; $password = 'xxxxxx'; try{ $dbh = new PDO($dsn, $user, $password); $password = 'test_password'; $hash_password = password_hash($password,PASSWORD_DEFAULT); $name = 'test_name'; $mail = 'test_mail5'; $sql = 'INSERT INTO test_tb (password,name,mail) VALUES(:password,:name,:mail)'; $stmt = $dbh->prepare($sql); $stmt->bindParam(':password',$password); $stmt->bindParam(':name',$name); $stmt->bindParam(':mail',$mail); $stmt->execute(); header('Location:main.php'); exit(); }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } ?>

上記のコードをphp create_user.phpで実行すると問題なく値もデータベースに入ってきます。しかし上記のコードを別ページの送信フォームから飛んでくると500エラーを返します。フォームのページregist.phpは下記のとおりです。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ユーザ情報の登録画面</title> </head> <body> <p>ユーザ情報</p> <form action="create_user.php" method="post"> <!--<input type="text" name="xxx"><br>--> <!--<input type="text" name="xxx">--> <input type="submit" value="送信"> </form> </body> </html>

試しにハッシュ化しているコードを一行コメントアウトしたらブラウザからでも正常に遷移してデータベースにデータも入りました。
なぜブラウザから遷移して実行するとエラーになってしまうのでしょうか?

phpのバージョンは5.6.40です。
どなたかご回答のほどよろしくお願いいたします。

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

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

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

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

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

Y.H.

2019/04/06 07:14

phpのエラーメッセージは何が出力されていますか? ログファイルに出力されているのでそのまま質問に記載ください。
sususu

2019/04/06 07:35

ご返信ありがとうございます。 php.iniに「error_log = php_errors.log」という部分があるので コメントアウトを外してエラーを出してから上記のログファイルにアクセスするために find / -name php_errors.logとうってファイルを探そうとしたのですが 見つかりませんでした。 どこにログが吐き出されるのでしょうか?
Y.H.

2019/04/06 07:37

本質問の趣旨とは別ですので別途質問してください。
sususu

2019/04/06 07:42

大変失礼いたしました!もう一度調べてから質問の方させていただきます。 あとこちらの件なのですが、apacheを再起動したら解決いたしました。 エラーログがどう出ているか気にもなるので調べてみたいと思います。 コメントくださり誠にありがとうございました!
guest

回答1

0

自己解決

apacheを再起動したら正常に動くようになりました。

投稿2019/04/06 07:43

sususu

総合スコア99

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問