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

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

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

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

Q&A

解決済

1回答

770閲覧

herokuでMySQLを使ったPHPをデプロイしたが、SELECT文を使用したページだけ表示されない。

退会済みユーザー

退会済みユーザー

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

0グッド

0クリップ

投稿2019/01/04 08:47

編集2019/01/04 09:07

herokuでMySQLを使ったPHPをデプロイしたが、SELECT文を使用したページだけ表示されない。

初めまして、こんばんは。
最近PHPを勉強し始め、フィットネスに関するブログやアプリケーションを提供するウェブサイトを作っております。
herokuでデプロイするとSELECT文を使っているページのみサイドバーが表示されるだけです。

イメージ説明

XAMPPを利用したローカル環境(localhost)では上手く表示されます。
今朝から格闘していますが、一人では解決できないと感じたので、ここで質問をさせていただきます。

今ある主なページとしては、以下の通りです。

  • index.php(ブログ記事をデータベースからSELECTして表示しているため表示されません。)
  • blog.php(同上)
  • portfolio.html(こちらはJavascriptで作成したアプリを使用できるページになっており、うまく表示されます。)
  • contact.php(利用者が質問を送信するためのページです。INSERT文をしようしていますが、表示されます。また、入力して送信すると、データベースに入力されたデータが挿入されたことを確認できました。)

このように、SELECT文を使用したページだけ表示されません。
ぜひ、ご教授していただけると幸いです。

発生している問題・エラーメッセージ

herokuでMySQLを使ったPHPをデプロイしましたが、SELECT文を使用したページだけ表示されません。 エラーメッセージは表示されず、上述したページ(index.phpとblog.php)だけサイドバーが表示されるだけです。 二つのページに共通することはSELECT文を利用していることです。 *INSERT文を利用しているcontact.phpは表示され、さらにはデータベースにもデータを挿入することができました。 XAMMPを利用したローカル環境では、うまく表示されているので、herokuデプロイ時に失敗したものだと思われます。 参考にしたページは[こちら](https://scotch.io/@phalconVee/deploying-a-php-and-mysql-web-app-with-heroku)です。

該当のソースコード

php

1index.php 2 3<?php 4 require('dbconnect.php'); 5 $sql = 'SELECT * FROM `posts` ORDER BY post_id DESC'; 6 7 8 //SQL実行 9 $stmt = $dbh->prepare($sql); 10 $stmt->execute(); 11 12 //データ取得 13 while ($record = $stmt->fetch(PDO::FETCH_ASSOC)) { 14 $posts[] = array( 15 "post_id"=>$record['post_id'], 16 "title"=>$record['title'], 17 "content"=>$record['content'], 18 "picture_path"=>$record['picture_path'], 19 "created"=>$record['created'] 20 ); 21 } 22?> 23途中省略 24<div class="fh5co-narrow-content"> 25 <h2 class="fh5co-heading animate-box" data-animate-effect="fadeInLeft">Read My Blog</h2> 26 <div class="row row-bottom-padded-md"> 27 <?php foreach ($posts as $post) { ?> 28 <div class="col-md-3 col-sm-6 col-padding animate-box" data-animate-effect="fadeInLeft"> 29 <img src="member_picture/<?php echo $post['picture_path']; ?>" width="150" height="150"> 30 </div> 31 <div class="col-md-9 col-padding animate-box" data-animate-effect="fadeInLeft"> 32 <h3><?php echo $post['title'] ?></h3> 33 <span><b> <i class="icon-comment"></i><?php echo $post['created'] ?></b></span></br> 34 <h4><?php echo mb_substr(strip_tags($post['content']),0,50).'...'; ?></h4> 35 <a href="show.php?no=<?php echo $post['post_id']; ?>" class="lead">Read More <i class="icon-arrow-right3"></i></a><hr style="border:0;border-top:1px solid;"> 36 </div> 37 <?php } ?> 38 </div>

php

1dbconnect.php 2 3<?php 4 $dsn = 'mysql:dbname=データベース名;host=ホスト名'; 5 $user = 'ユーザー名'; 6 $password='パスワード'; 7 $dbh = new PDO($dsn, $user, $password); 8 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 9 $dbh->query('SET NAMES utf8'); 10?>

heroku logsをした結果、長いのでエラーが出ているところだけ抜粋させていただきます。

2019-01-04T08:33:42.909274+00:00 app[web.1]: [04-Jan-2019 08:33:42 UTC] PHP Fatal error: Uncaught Error: Call to undefined function mb_substr() in /app/index.php:219 2019-01-04T08:33:42.909291+00:00 app[web.1]: Stack trace: 2019-01-04T08:33:42.909293+00:00 app[web.1]: #0 {main} 2019-01-04T08:33:42.909359+00:00 app[web.1]: thrown in /app/index.php on line 219
2019-01-04T08:33:50.425259+00:00 app[web.1]: [04-Jan-2019 08:33:50 UTC] PHP Fatal error: Uncaught Error: Call to undefined function mb_substr() in /app/blog.php:134 2019-01-04T08:33:50.425341+00:00 app[web.1]: Stack trace: 2019-01-04T08:33:50.425346+00:00 app[web.1]: #0 {main} 2019-01-04T08:33:50.425422+00:00 app[web.1]: thrown in /app/blog.php on line 134
2019-01-04T08:43:03.853297+00:00 app[web.1]: [04-Jan-2019 08:43:03 UTC] PHP Fatal error: Uncaught Error: Call to undefined function mb_substr() in /app/index.php:219 2019-01-04T08:43:03.853834+00:00 app[web.1]: Stack trace: 2019-01-04T08:43:03.853837+00:00 app[web.1]: #0 {main} 2019-01-04T08:43:03.853839+00:00 app[web.1]: thrown in /app/index.php on line 219 2019-01-04T08:43:03.853841+00:00 app[web.1]: [04-Jan-2019 08:43:03 UTC] PHP Fatal error: Uncaught Error: Call to undefined function mb_substr() in /app/blog.php:134 2019-01-04T08:43:03.853844+00:00 app[web.1]: Stack trace: 2019-01-04T08:43:03.853845+00:00 app[web.1]: #0 {main} 2019-01-04T08:43:03.853847+00:00 app[web.1]: thrown in /app/blog.php on line 134

index.php:219とblog.php:134のいずれにおいても以下がコードになります。

<div class="desc">  <h3><?php echo $post['title'] ?></h3>  <span><b> <i class="icon-comment"></i><?php echo $post['created'] ?></b></span></br>  <h4><?php echo mb_substr(strip_tags($post['content']),0,50).'...'; ?></h4>  <a href="show.php?no=<?php echo $post['post_id']; ?>" class="lead">Read More <i class="icon-arrow-right3"></i></a><hr style="border:0;border-top:1px solid;"> </div>

試したこと

データベースに繋がっていることは確認できました(上述したように、INSERT文を利用してデータをherokuで利用しているデータベースに挿入できたため)。
Herokuには画像ストレージが標準で装備されていないとあるウェブサイトに書かれていたので、画像に関するコードを全て削除してデプロイしたが、結果は同じでした。

補足情報(FW/ツールのバージョンなど)

PHP 7.1.19
cleardbを使用しています。

以上です。何卒よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/01/04 08:54

結構情報書いてくれてるんですが、一番大事なエラーログがないと助言難しいですね。 heroku logsで見れないでしょうか?
退会済みユーザー

退会済みユーザー

2019/01/04 08:57

それから、herokuはpostgres使う場合が多いと思うんですが、今回はcleardbか何か使ってるということですか?
退会済みユーザー

退会済みユーザー

2019/01/04 09:09 編集

dyoshikawa 様 ご返信ありがとうございます。 ①heroku logsをした結果を追記致しました。 ②はい、cleardbを使用しております。 何卒よろしくお願いいたします。
guest

回答1

0

ベストアンサー

なるほど、本番にPHP extensionのmbstringが入ってないですね。

下記など参考にしてmbstringをheroku環境に追加して下さい。

https://yudai-stadium.com/blog/heroku-mbstring/

投稿2019/01/04 09:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/01/04 09:25

dyoshikawa 様 無事に!デプロイできました。 本当にありがとうございます。 今後ともよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問