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

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

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

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

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

Q&A

解決済

1回答

5351閲覧

コマンドライン実行で成功するphpがブラウザ経由ではエラーになる

imprezza

総合スコア61

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

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

0グッド

0クリップ

投稿2018/03/01 07:21

編集2018/03/01 08:06

前提・実現したいこと

ubuntu16.4&php7.2の環境でWEBサーバを作成しています。
そこでバーコードを表するためにImageBarcode2をPEARでインストールしました。

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

コマンドでphpを直接実行するとバーコード画像ファイルが作成されるのですが、ブラウザから同じphpファイルを指定するとFatal errorとなってファイル作成がされません

Fatal error: Uncaught Error: Call to undefined function imagefontheight() in /usr/share/php/Image/Barcode2/Writer.php:63 Stack trace: #0 /usr/share/php/Image/Barcode2/Driver/Code128.php(274): Image_Barcode2_Writer->imagefontheight(2) #1 /usr/share/php/Image/Barcode2.php(146): Image_Barcode2_Driver_Code128->draw() #2 /var/www/html/php/testbarcode.php(16): Image_Barcode2::draw('012345', 'Code128', 'png', false) #3 /var/www/html/php/x_testbarcode.php(7): mkBarcode->mkBarcode('012345') #4 {main} thrown in /usr/share/php/Image/Barcode2/Writer.php on line 63

該当のソースコード

<?php ini_set('display_errors', 1); require "testbarcode.php"; $barcode = new mkBarcode("012345"); ?> ****** ***x_testbarcode.php*** <?php require("Image/Barcode2.php"); class mkBarcode{ var $barcode_val; var $image_name; function mkBarcode($barcode_val){ $this->barcode_val=$barcode_val; $this->image_name='barcodeImage/'.$barcode_val.'.png'; $code= new Image_Barcode2(); $image= $code->draw($this->barcode_val,'Code128','png',false); imagepng($image,$this->image_name); } function getBarcodeImage(){ return $this->image_name; } } ?> ***

試したこと

(1)Image_Barcode2のphpファイル内にあるディレクトリ指定を
'Image/Barcode2/~'をルートからの絶対パスに置換してみましたが結果は変わらず

(2)ディレクトリ&ファイルの所有者/権限による制限を疑い、関係のありそうな
・Image_Barcode2のインストールディレクトリ
・自分で作成phpファイル
・画像ファイル作成ディレクトリ
の各箇所を chmod 777 で利用許可を拡大しましたがエラーは出続けます

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

(変更01)ソース内の外部呼出しの概略を説明します
x_testbarcode.php (自作)
・・| calss mkBarcodeを呼出
・・+-testbarcode.php(自作)
・・・・| class Image_Barcode2->drawを呼出
・・・・+-$include_path Image/Barcode2.php
・・・・・・| class Image_Barcode2_Driver_Code128を呼出
・・・・・・ +-$include_path Image/Barcode2/Driver/Code128.php
・・・・・・・・| class Image_Barcode2_Writerを呼出
・・・・・・・・+-$include_path Image/Barcode2/Writer.php
・・・・・・・・・・・・function imagefontheight($font)

外部ファイルの呼び出しとclass、その中のfunctionがゴッチャゴチャ
になっているかもしれませんが、phpファイルの階層が外部ファイルを
呼び出している順です。

不足する情報があればご指摘ください。
よろしくお願いします。

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

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

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

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

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

m.ts10806

2018/03/01 07:43

imagefontheight()ってどこで使っているんでしょうか?
imprezza

2018/03/01 08:08

説明不足ですみません。補足情報として呼び出しファイルの概要を追加しました
yag

2018/03/01 08:13

念の為ですが、ApacheやNginx等のWebサーバーの再起動ってされてますよね?
yag

2018/03/01 08:13

あとはPHP-FPMを使用しているのであればそれの再起動もされてますか?
imprezza

2018/03/01 08:21

ご指摘ありがとうございます。LAMP環境を構築しましたがNginx、PHP-FPMは使用していません。Apacheの再起動は実施していましたが、念のためサーバの再起動も実施しましたが現象変わらずです。
guest

回答1

0

ベストアンサー

webブラウザからの phpinfo() と、
コマンドラインからの phpinfo() で違うところがないか比較するところから、でしょうか。

また、コマンドラインからの実行は一般ユーザーなのか、rootユーザーなのか、
webブラウザからの実行は例えばapacheユーザーになって
何かしら参照する環境変数が異なり可能性もあります。

投稿2018/03/01 08:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

imprezza

2018/03/01 09:21

回答ありがとうございます アカウントと権限、それに参照の確認ですね コマンド実行の際はroot、一般ユーザ共に試しましたがWEBブラウザのユーザが何だったのかは頭から抜けていました WEBブラウザがどのユーザを使うか、まず知らⓑてみます
imprezza

2018/03/05 04:15

質問の現象が発生した原因がわかりました m6uさんのご指摘にならってコマンドライン上でphpinfoを実行してみた所、phpのバージョンが複数インストールされているためです ・コマンドライン:php7.2 ・webブラウザ:php7.0 根本をたどると正しい手順でバージョンアップしていないためで、WEBブラウザで参照しているphp7.0にImage_Barcode2がセットアップされていないから動かない、という状況でした このとっ散らかった環境でどのように整理して(php7.0とphp7.2のどちらに揃えるか、現在の設定をどうやって移行するか、等)対処すれば良いかという問題がありますが、別のお話なのでこの質問は一旦終了して、再質問させていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問