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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

2723閲覧

xampp localhost で mpdf を使用したが、mbstring extension must be loaded というエラーが出ます。

Hello_ryotaro

総合スコア6

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/01/22 04:28

編集2021/01/22 04:33

php

1<?php 2require_once __DIR__.'/vendor/autoload.php'; 3 4$mpdf = new \Mpdf\Mpdf(); 5 6// タイトルを指定 7$mpdf->setTitle("test"); 8 9// PDFの内容を出力 10$mpdf->WriteHTML('<h1>Hello, world!</h1>'); 11 12// 保存時のファイル名を指定 13$mpdf->Output("download.pdf", "D"); 14return;

●したいこと
以下の記事を参考にして、phpでmpdfを用いて、pdfの作成。(linuxのサーバーでは動きました。)
https://gray-code.com/php/output-to-pdf-file-by-mpdf-libraries/
https://gray-code.com/php/setting-pdf-file-by-mpdf-libraries/
mbstringのextensionをloadしたい。

以上の事をlocalhostで開きたいのですが、

Fatal error: Uncaught Mpdf\MpdfException: mbstring extension must be loaded in order to run mPDF in C:\xampp\htdocs\composer\vendor\mpdf\mpdf\src\Mpdf.php:9615 Stack trace: #0 C:\xampp\htdocs\composer\vendor\mpdf\mpdf\src\Mpdf.php(1032): Mpdf\Mpdf->_dochecks() #1 C:\xampp\htdocs\composer\pdf_test.php(4): Mpdf\Mpdf->__construct() #2 {main} thrown in C:\xampp\htdocs\composer\vendor\mpdf\mpdf\src\Mpdf.php on line 9615

という、エラーが出ます。

試したこと
http://yamamichi.no-ip.com/Theory&Methods/2-3MySQL-USE/php/1-2phpini/index5.html
https://www.knowledgebase-script.com/kb/article/how-to-enable-mbstring-in-php-46.html
(以上のことを試すと、cmdでphp -vで実行すると、以下のようなエラーが出るので、エラーが出ている所は、コメントアウトを行いました。すると、エラー文は、なくなります。)

cmd

1C:\Users\KICS17>php -v 2PHP Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in Unknown on line 0 3 4Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in Unknown on line 0 5PHP Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0 6 7Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0 8PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 9 10Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 11PHP 8.0.2RC1 (cli) (built: Jan 20 2021 13:56:55) ( ZTS Visual C++ 2019 x64 ) 12Copyright (c) The PHP Group 13Zend Engine v4.0.2RC1, Copyright (c) Zend Technologies

(php_mbstring.dllというファイルがextというフォルダにあることを確認し、extension=php_mbstring.dllとphp.iniに記入済みです。)
(php8に更新後、xamppが動かなかったので、参考にしたサイトhttps://qiita.com/rana_kualu/items/97db65f8741280331202)

現在、cmdでphp -listを実行すると、mbstringの部分は以下のようになります。

cmd

1mbstring 2 3Multibyte Support => enabled 4Multibyte string engine => libmbfl 5HTTP input encoding translation => enabled 6libmbfl version => 1.3.2 7 8mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. 9 10Multibyte (japanese) regex support => enabled 11Multibyte regex (oniguruma) version => 6.9.6 12 13Directive => Local Value => Master Value 14mbstring.detect_order => UTF-8 => UTF-8 15mbstring.encoding_translation => On => On 16mbstring.http_input => no value => no value 17mbstring.http_output => no value => no value 18mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml+xml) => ^(text/|application/xhtml+xml) 19mbstring.internal_encoding => no value => no value 20mbstring.language => Japanese => Japanese 21mbstring.regex_retry_limit => 1000000 => 1000000 22mbstring.regex_stack_limit => 100000 => 100000 23mbstring.strict_detection => Off => Off 24mbstring.substitute_character => no value => no value

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
環境 
Xampp 3.2.4
PHP 8.0.2

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

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

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

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

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

m.ts10806

2021/01/22 04:53

PHP複数入ってたりしませんか
退会済みユーザー

退会済みユーザー

2021/01/22 04:57 編集

「Xampp 3.2.4」っておそらくXAMPP Control Panelというプログラムのバージョン情報であってXAMPP全体としてのバージョン情報ではない。XAMPPインストール時のファイル名やWindowsの設定→アプリなどから正しいバージョン情報がほしい。それが8.0.2なの? https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/https://www.apachefriends.org/download.html を見てもまだ8.0.1みたいなんだけど。環境構築の詳しい説明がほしい。
Hello_ryotaro

2021/01/22 05:06

xamppにもともと入ってたphpは名前を違うものに変更して、 https://windows.php.net/qa/ 上記のサイトから、VS16 x64 Thread Safeをダウンロードして、名前をphpに変更して持ってきてます。
退会済みユーザー

退会済みユーザー

2021/01/22 05:09 編集

XAMPPに含まれるapache httpdが、8.0.2RC1を使えているかどうかは、<?php phpinfo(); だけのファイルをwebブラウザから確認しないとわからないな。httpd.conf まで修正を加えてますか?
Hello_ryotaro

2021/01/22 05:08

xamppでapacheを起動し、adminを押して、localhostの一番下から以下の情報を得られました。 Apache/2.4.43 (Win64) OpenSSL/1.1.1f PHP/8.0.2RC1 Server at localhost Port 80
Hello_ryotaro

2021/01/22 05:13

phpinfo();でPHP Version 8.0.2RC1となってました。 httpd.confは修正してないです。
退会済みユーザー

退会済みユーザー

2021/01/22 05:14

httpdとphpの組み合わせはできているようですね。次にmPDF側について。 https://github.com/mpdf/mpdf/blob/development/CHANGELOG.md を見ると、mPDF 8.0.10以降でPHP 8対応しているようですが、mPDFのバージョンは。
Hello_ryotaro

2021/01/22 05:19

composer show -i で確認しました。 mpdf/mpdf v8.0.10 PHP library generating PDF files from UTF-8 encoded HTML phpinfo();のページでstringで検索して、mbstrigらしきものを探したんですけど、ないですね。それが原因ですかね。
退会済みユーザー

退会済みユーザー

2021/01/22 05:26

php.iniに記述していて反映されていないのだとしたら、apache httpdの再起動で反映されないでしょうか。
Hello_ryotaro

2021/01/22 05:31

そうですね。再度、php.iniにextension=php_mbstring.dllがあるのを確認して、 xamppのapacheのstartとstopボタンを何回も押したんですが、変わりません。
Hello_ryotaro

2021/01/22 06:16

ありがとうございます!!!!!:) 解決できました。 conf/httpd.confの最後に以下を書き込みました。 LoadModule php_module "C:\Xampp\php\php8apache2_4.dll" PHPIniDir "C:\Xampp\php\" AddHandler application/x-httpd-php .php httpd-xampp.confの設定は、行ってたのですが、httpd.confの設定もしないといけなかったんですね。。。
guest

回答1

0

自己解決

https://teratail.com/users/m6u m6uさんが教えてくれたサイトを参考にしました。

https://qiita.com/economist/items/86acacb41d8273c57b88
このサイトを参考にし、
httpd.confに以下の内容を付け加えました。(パスは自分の環境に調整しました。)
LoadModule php_module "C:/php/php8apache2_4.dll"
PHPIniDir "C:/php/"
AddHandler application/x-httpd-php .php
その後、無事に動きました。
phpinfo();で内容を確認したところ、無事にmbstringと記載されていました。

httpd-xampp.confの設定は行っていたのですが、httpd.confの方は気にしてなく、読み込んでいなかったことが原因みたいです。。。

投稿2021/01/22 06:20

編集2021/01/22 06:31
Hello_ryotaro

総合スコア6

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

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

退会済みユーザー

退会済みユーザー

2021/01/22 06:35 編集

httpd.conf しか読み込まないわけじゃなくて、httpd.conf内の定義でIncludeディレクティブ https://httpd.apache.org/docs/2.4/ja/mod/core.html#include で指定のパスのファイルを読み込むというのがあるので、その定義によってhttpd-xampp.confも読み込まれているはずです。 他のconfファイルが読み込まれている前提で、その全体でphpに関わる定義がどうなっているかを点検する、というのが正しいところではないかと察します。
Hello_ryotaro

2021/01/22 06:40

httpd.confを確認したところ、 # XAMPP settings Include "conf/extra/httpd-xampp.conf"と記載されている箇所を見つけました。 httpd.confは、ほかのconfファイルを読み込んでいて、confの中でも、一番大切なconfファイルという認識でいいですかね?? 理解できました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問