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

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

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

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

XAMPP

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

Q&A

解決済

2回答

4538閲覧

php.iniが読み込まれていない。解決策教えてください。

kenji_plus

総合スコア4

PHP

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

XAMPP

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

0グッド

0クリップ

投稿2020/05/05 11:27

PHPの学習を始めている初心者です。Xamppを使用してPHPの学習を進めていますが、下記の問題に直面しています。
mbstringを使用したいのですが、これが使用できません。いろいろと調べてみましたところ、原因はどうやらphp.iniが読み込まれていないことがその理由のようです。

環境
OS: Windows8.1
Xampp: PHP7.2.0

状況:

  1. Php.ini内の設定で、extension=mbstring.dllは初めから(デフォールトの状態)コメントアウトはされていません。
  2. この状態でmbstring関連の関数を使用するとエラーとなってしまいます。
  3. 一方、php info( );を実行すると示されるPHPの関連情報の中に、mbstringの関連条項はしめされません。
  4. php.iniの実際のディレクトリーは、上のPHP情報に示されるphp.iniのディレクトリーを示すLoaded Configuraion Fileに示されるディレクトリーと全く同じです。
  5. 以上より、”php.iniのディレクトリーは正しく認識されているが、読み込まれていない”と思うのですが。
  6. 上記を除いたXamppの作動状況は、特に問題なく作動しています。

解決策を教えていただけると助かります。

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

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

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

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

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

m.ts10806

2020/05/05 11:46

どういうコードを書いてどういうエラーが出たのか具体的に記載してください。
kenji_plus

2020/05/05 18:19

早速の回答ありがとうございます。 エラーコメントは下記のとおりです。 Parse error: syntax error, unexpected ''jpeg))' (T_ENCAPSED_AND_WHITESPACE) in C:\xampp\htdocs\view.php on line 22 line22とその近辺のコードは下記のとおりです。 $img_path = $img_dir. $_FILES["uploadfile"]["name"]; $thumbnail_imag_path = $img_dir.$thumbnail_name; if(mb_stroops($_FILES["uploadfile"]["type"], 'jpeg)) $size = getimagesize($file_path); ?> このうち、“if(mb_stroops($_FILES["uploadfile"]["type"], 'jpeg))“の部分がline22に相当します。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2020/05/06 02:00

mb_stroops ←タイポしてるじゃん
kenji_plus

2020/05/06 02:40

Kosuke_Shibuya様、 確かにご指摘の通りタイプミスしていました。申し訳ありません。早速、修正して実行してみました。しかし、結果は下記のエラーメッセージが表示されます。 Fatal error: Uncaught Error: Call to undefined function mb_strpos() in C:\xampp\htdocs\view.php:22 Stack trace: #0 {main} thrown in C:\xampp\htdocs\view.php on line 22 php.iniが読み込まれていないと思うのですが。
guest

回答2

0

自己解決

今回php.iniが読み込まれていない問題を何とか自力で解決しましたので下記にまとめ報告いたします。
ネットで検索してもなかなか自分のケースに当てはまる解決方法がないためコマンドプロンプトで何とかならないかと模索している途中、何気なく使用しているPHPのバージョンをコマンドプロンプトで調べました。

コマンドプロンプトでは、まずディレクトリーをphpのインストールしているディレクトリーにコマンドcdで移動する。その後にphpのバージョンを調べるコマンドphp-vを実行する。

すると、phpのバージョンとともにphp.iniのsyntax errorが表示されたのです。一連の内容は下記の通りです。

ディレクトリーの変更:C:>cd C:\xampp\php

PHPのバージョンを調べる。:C:\xampp\php>php –v

表示されたSyntax error:PHP: syntax error, unexpected '|' in C:\xampp\php\php.ini on line 457

表示されたPHPのバージョン:PHP 7.2.0 (cli) (built: Nov 29 2017 00:17:00) ( ZTS MSVC15 (Visual C++ 2017) x86
)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

php.iniのline456~457にかけて、PHPで使用されるエラー時のレポーティングについて、3ケースのオプションが表示されています。左の数字は私のphp.iniでの行数を示しています。

455 ; error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT

456 ; error_reporting=E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

457 E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)

Defaultは455行目の” error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT”でしたが、頻繁にエラー表示がなされ、PHPの学習がなかなか前に進まないため、エラー時のみ表示がなされる457行目のE_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)のコメントアウトを外し、455行目はコメントアウトして使用していました。

何故、457行目がsyntax errorとなってしまうのかわかりませんが、とにかく'|'がsyntax errorの原因とのことなので、とりあえずDefaultの455行目に戻し、457行目はコメントアウトとして、PHPを動かしてみると、

php info()はmbstring, PDO, pdo_mysql等が全て表示され、試しに関連する関数が含まれるコードを実行してみたところ、すべて正常に作動するに至りました。

機関が発行しているコードのDefault以外のオプションを採用したら、エラーが発生するそんなことあるのですね。

以上報告いたします。

投稿2020/05/10 07:47

kenji_plus

総合スコア4

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

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

0

Php.ini内の設定で、extension=mbstring.dllは初めから(デフォールトの状態)コメントアウトはされていません。

とありますが、本来でしたら

ini

1extension=php_mbstring.dll

となっていると思いますが、タイプミスでしょうか?
もし本当にiniファイルの設定が"extension=mbstring.dll"となっているのでしたら、上記のように修正してみてください。

■追記
コメントを頂いたので、それに対する追記です。XAMMPを特に変更せずにインストールしていると、C:\xammp\php\extフォルダに拡張機能のdllが配置されていると思います。
ここにphp_mbstring.dll(もしくはmbstring.dll)が存在するか確認してみてください。

投稿2020/05/05 14:39

編集2020/05/05 23:22
KoichiSugiyama

総合スコア3041

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

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

kenji_plus

2020/05/05 18:41

早速の回答ありがとうございます。 extension=mbstring.dllをextension=php_mbstring.dllに変更して試してみました。再起動後の結果ですが、状況は残念ながら変わりませんでした。実は、オリジナルはextension=mbstringでしたので、extension=php_mbstringも試してみました。これも作動しませんでした。
kenji_plus

2020/05/06 00:38

KoichiSugyama様、 早朝からありがとうございます。 早速、C:\xammp\php\extフォルダーを調べてみました。確かに、このフォルダーにext関連のファイルが多数入っていますし、php_mbstring.dllもあります。
kenji_plus

2020/05/09 01:34

KoichiSugiyama様、 先日ご連絡しました様にC:\xammp\php\extのフォルダー内にphp_mbstring.dllはありますし、php.ini内の設定も、;のコメントアウト表示はなく、extension= php_mbstring.dllとなっており、設定としては間違いないはずです。(extension=mbstring.dllでもphp_mbstringでも試しています。) それでもphp info();を開いたPHP情報の中にmbstringはなく、mbstring関連の関数をPHPで使用するとエラーとなってしまう。Php.iniが読み込まれていないのでしょうか? どのように解決したらよいのでしょうか。お忙しいところ恐縮ですが、アドバイスいただけると助かります。
KoichiSugiyama

2020/05/09 06:26 編集

うーん、そうなると、私の知識では実際の環境を直接調べてみないとなんとも判断できません。お力になれずに申し訳ありませんが、php.iniの内容と、phpinfo()の実行結果を丹念に見比べるくらいしかなさそうに思います。
kenji_plus

2020/05/10 04:24

mbstringだけでなく、今回PDOによるデータベースへの接続も出来ないことが分かりました。いずれにしてもphp.iniが読み込まれていないのが原因のようです。xamppの再インストールは出来るだけ避けたいので、何か方法がないのかもう少し検索してみるつもりです。有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問