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

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

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

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

Q&A

解決済

2回答

8040閲覧

PHPで、Finfo宣言時にエラーが出力される。エラーメッセージ Fatal error: Class 'FInfo' not found in

daiyan0520

総合スコア10

PHP

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

0グッド

0クリップ

投稿2015/05/13 06:31

編集2015/05/13 06:32

phpのバージョンは 5.3.29です。
hInofoをnewしたタイミングでエラーがでます。

ソース
370行 $data = file_get_contents($path);
371行 $info = new FInfo(FILEINFO_MIME_TYPE);

エラー内容
Fatal error: Class 'FInfo' not found in /home/○○/○○/○○.php on line 371

他のサイトで下記対処法が紹介されていたのですが、駄目でした。
php.iniに extension=php_fileinfo.dll

解決策を教えて頂けないでしょうか。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

いやいやいや、

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"

この時点で Linux かなにか、少なくとも Windows ではないでしょう。

php_fileinfo.dll

拡張子 dll は有名な Windows のダイナミックリンクライブラリの拡張子です。
Linux で似たようなものとしては、拡張子 so のシェアードオブジェクトです。
つまり Linux なら php_fileinfo.so です。

そして Linux の PHP 拡張だとプレフィックス php_ は付かないので fileinfo.so です。


恐らくは fileinfo 拡張がインストールされていないためでしょう。

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"

ということは、PHP はソースからインストールされていますね?

長らく PHP をソースから入れていないのでうろ覚えですが、インストール時に展開したソースツリーの ext/fileinfo/ というディレクトリで

phpize ./configure make make install

とすれば fileinfo 拡張がインストールされます。

そのうえで php.ini などに extension=fileinfo.so を追記します(apache や php-fpm は再起動する必要があります)。

投稿2015/05/13 08:15

編集2015/05/13 08:22
ngyuki

総合スコア4514

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

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

orange0190

2015/05/13 08:22

ああ、そうですね。 ついwindows前提で考えてました・・・
daiyan0520

2015/05/13 08:38

ngyukiさん >>ということは、PHP はソースからインストールされていますね? 私は共有レンタルサーバーを使用しています。(使用しているレンタルサーバはfutoka)PHPのインストールは私自身は行っていないためわかりません。 大変申し分けないのですが、 >>長らく PHP をソースから入れていないのでうろ覚えですが、インストール時に展開したソースツリーの ext/fileinfo/ というディレクトリで >>phpize >>./configure >>make >>make install >>とすれば fileinfo 拡張がインストールされます。 上記の内容が理解できません。 質問 ext/fileinfo/とはどこにあるのでしょうか? 大変申し訳ありませんが、ご教授のほどをよろしくお願いします。
ngyuki

2015/05/13 08:49

共有レンタルサーバーなら自分でどうにかするのは無理です。
ngyuki

2015/05/13 08:52

と、思いましたが > そこでphp.inwp修正してみました。 (php.ini のことですよね?)その php.ini はどこのファイルをどうやって変更したのですか? そもそも共用のレンタルサーバなら Apache の再起動も勝手には出来ないですよね?
daiyan0520

2015/05/13 09:02

php.inwpは誤記です。php.ini のことです。 やっぱりそうですか。共有サーバだといじれないのですね。 php.iniは利用しているレンタルサーバ(futoka)のWEB画面上から変更できました。 https://www.futoka.jp/?mode=faq&sel%5B12%5D=5 php.iniは、新たに下記に作成されました。 /home/○/public_html/php.ini Apache の再起動もできなそうです。 やはり専用サーバを借りるしかないのでしょうか?今まで本格的なサイトを運営した事がなく知識不足で申し訳ございません。
ngyuki

2015/05/13 09:11

> /home/○/public_html/php.ini CGI モードだと php スクリプトと同じディレクトリの php.ini が読まれたような気がするので、fileinfo.so をどこか別の環境で自分でビルドして dl() 関数で無理やり読み込む、などという荒業もできるかもしれません。 が、まっとうな使い方とは思えないですし、利用規約的な意味で問題ないのかどうかもわからないです(共用のレンタルサーバを使ったことがないのでその辺りの事情はわかりません)。専用サーバ、あるいは PasS などを使う方がいいだろうと思います。 (あるいは fileinfo 拡張が有効な別のレンタルサーバに乗り換える) (レンタルサーバの管理会社に問い合わせてみても良いと思います)
daiyan0520

2015/05/13 09:51

ありがとうございます。専用サーバもしくはVPSから探してみます。助かりました。
guest

0

php.iniのextension_dirの項目は設定されているでしょうか?
こちらに同じ症状で解決に至ったという情報があります。

投稿2015/05/13 06:35

orange0190

総合スコア1698

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

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

daiyan0520

2015/05/13 06:44

さっそくの返信ありがとうございます。 リンク先の問題は先ほど試して見ました。 現在サーバーはfutokaレンタルサーバを利用しております。設定は初期値です。 設定値 extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613" 実際にサーバの中を見てみたら、 /usr/local/lib/php/extensions/の配下には no-debug-non-zts-20090626 no-debug-non-zts-20100525 2つが置かれていました。 そこでphp.inwp修正してみました。 extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626" extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20100525" どちらで試してみてもエラーは変わりませんでした。 問題はここでないのでしょうか?それとも修正方法がおかしいのでしょうか?もし分かるようなら教えてください。
orange0190

2015/05/13 06:56

ちょっと私では詳しくは分かりかねますが、そもそもphp_fileinfo.dllは存在してますか?
orange0190

2015/05/13 07:02

その他、確認すべき点としてはサーバの再起動はしたかということですかね・・・
daiyan0520

2015/05/13 07:04

ShunsukeIzuiさま php_fileinfo.dllはないかもしれません。 初歩的な質問で申し訳ございませんが、本来php_fileinfo.dllはどこに存在するのでしょうか。 /usr/local/lib/php の配下にあるのでしょうか。
orange0190

2015/05/13 07:15

php_fileinfo.dllはphp.iniのextension_dirに設定した場所になければなりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問