tomomik’s blog

とりあえずのメモ 違ってたらゴメンなさい

PHPExcelで画像をはりつけたExcelをつかうと502エラーになる(PHP 7.0.19)

PHPExcelを使う時にテンプレートを用意して、必要な内容をPHPで書き込むと思います。 テンプレートにロゴとか社印とか画像ファイルをつけたりすると思うのですが、 PHPのバージョンが違うと502のエラーになりました。 テンプレートにしたExcelファイルはXLSX形式です。

PHP 7.0.15 だと問題なかったのですが、PHP 7.0.19だと502エラー

処理が失敗している箇所はPHPExcelの Writer/Excel2007/ContentTypes.php のgetImageMimeType。

getImageMimeTypeでExcelファイルにある画像の拡張子を取得しているのですが、 XLSX形式のファイルをzipで解凍してExcelファイルに含まれている画像のパスからだと getimagesize関数では失敗するようです。 PHP 7.0.15で問題なくってPHP 7.0.19で失敗するのか分かりません(涙

とりあえず、テンプレートのファイルをxls形式にすると この問題は発生しませんでした。

私の環境だけかもしれないですが念のためーー

FuelPHPでPHPUnitを使用するときに'PHPUnit_Framework_TestCase' not found って出た

タイトルの通りですが、下記のエラーがでました。 FuelPHPのバージョンは1.8です。

$ php oil test --group=App
Tests Running...This may take a few moments.
PHP Fatal error:  Class 'PHPUnit_Framework_TestCase' not found in /var/www/html/project/fuel/core/classes/testcase.php on line 19

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /var/www/html/project/fuel/core/classes/testcase.php on line 19
Fatal Error - Class 'PHPUnit_Framework_TestCase' not found in COREPATH/classes/testcase.php on line 19

PHPUnitのバージョンは6です。 なんでかなーと思ってると下記の記事を見つけました。

PHPテストフレームワーク「PHPUnit 6.0」リリース | OSDN Magazine

 PHPUnit 6.0では、PHP 5.6がサポート対象外となり、PHPはバージョン7と7.1をサポートする。PHPUnit_Framework_TestCaseがPHPUnit\Framework\TestCaseとなるなど、コードユニットが名前空間化された。

ということなので fuel/core/classes/testcase.php の extends 以降を修正しました。

abstract class TestCase extends \PHPUnit\Framework\TestCase { }

とりあえず、エラーがなくなって PHPUnit が動きました。

修正の方法はもっと別の方法があるような気がするなあ。

WordPressでプラグインなしで全てのカテゴリーを取得する

get_categories関数を使えばカテゴリーが取得できます。

get_categories('get=all');

get_categories関数のパラメーターに get=all を指定すること。

関数リファレンス/get categories

パラメーターなしだとカテゴリーの中で投稿に紐付いてないカテゴリーは取得されないと思います。

get_categoryだとその投稿のカテゴリーしか取得出来なかったです。

function.phpなどに以下のようにして書いて関数を呼んでやれば全てのカテゴリーを表示させられるはずです。

<?php 
function get_all_categories(){
  $all_categories;

  $categories = get_categories('get=all'); 
  foreach ($categories as $category) {
    $all_categories .= $category->cat_name;
  }

 return $all_categories;
}
 ?>