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

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

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

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

解決済

Cakephp2のPHPUnitがchild pid 4197 exit signal Segmentation faultで終了する

Ummo
Ummo

総合スコア30

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

1回答

0評価

0クリップ

186閲覧

投稿2022/05/11 00:09

編集2022/05/24 10:15

すでに稼動しているCakePHP2で、テストコードを実行することになったため、PHPUnit を入れましたが正常に動作しません。
もしよければアドバイスいただけると嬉しいです。

1. 環境

  • SentOS 7
  • PHP 5.5
  • CakePHP2.2
  • ドキュメントルートが/var/www/public_html/hoge/

 
2. PHPunitをインストールした手順

(1) 以下のCakePHPのページを参考にcomposerでインストールしました。
※composer.pharはドキュメントルートにDL後、下記ページ記載のコマンドを実行
https://book.cakephp.org/2/ja/development/testing.html#composer

php composer.phar require --dev phpunit/phpunit:"3.7.38"

 
(2) テストコードを以下の階層に作成
/var/www/public_html/hoge/fuge/Test/Case/Model/SampleTest.php
※「fuge」の部分は本来CakePHPの「app」に該当します。理由があってディレクトリ名を「fuge」に変更しています。
※/var/www/public_html/hoge/fuge/Model/Sample.phpがあることは確認済み
※テストコードはひとまず実行確認ができればと思ったので以下のように記載しました。

App::uses('Sample', 'Model'); class SampleTest extends CakeTestCase { public function testBase { $str = null; $this->assertNull($str); } }

 
(3) fugeの階層に移動しテストコードを実行するとエラーになる
※テストコード実行

./Console/cake test app Model/SampleTest

※エラー

Warning Error: include(PHPUnit/Autoload.php): failed to open stream: No such file or directory in [/var/www/public_html/hoge/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 146] 2022-05-10 21:32:30 Warning: 3042 - - include(PHPUnit/Autoload.php): failed to open stream: No such file or directory in [/var/www/public_html/hoge/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 146] Warning Error: include(): Failed opening 'PHPUnit/Autoload.php' for inclusion (include_path='/var/www/public_html/hoge/lib:/usr/local/bin') in [/var/www/public_html/hoge/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 146] 2022-05-10 21:32:30 Warning: 3042 - - include(): Failed opening 'PHPUnit/Autoload.php' for inclusion (include_path='/var/www/public_html/hoge/lib:/usr/local/bin') in [/var/www/public_html/hoge/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 146] Error: Please install PHPUnit framework v3.7 (http://www.phpunit.de) #0 /var/www/public_html/hoge/lib/Cake/Console/ShellDispatcher.php(206): TestShell->initialize() #1 /var/www/public_html/hoge/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch() #2 /var/www/public_html/hoge/fuge/Console/cake.php(35): ShellDispatcher::run(Array) #3 {main}

 
(4)以下参考にしてbootstrap.phpの一番上にパスを記載
https://qiita.com/tkj/items/7b480672f55ecad5d36b

<?php require '/var/www/public_html/hoge/vendor/autoload.php'; /**

 
(5) モジュールをインストール

yum install --enablerepo=remi-php55 php-xml

 
(6) テストコードを実行。コマンドは通ったように見えるがエラーとなっている

Welcome to CakePHP v2.4.10 Console --------------------------------------------------------------- App : fuge Path: /var/www/public_html/hoge/huge/ --------------------------------------------------------------- CakePHP Test Shell --------------------------------------------------------------- Argument #2 of PHPUnit_TextUI_ResultPrinter::__construct() must be a boolean

 
この「PHPUnit_TextUI_ResultPrinter::__construct() must be a boolean」が永遠に解決できず、原因が全然分かりません…
何かアドバイスがあれば、よろしくお願いします。


ーーーーーーーーーーーーー
2022年5月15日 追記
ーーーーーーーーーーーーー
PHPUnit側のソースを修正して通過するようにしたところ、今度はSegmentation faultとなり、PHPUnitを実行したら落ちるようになってしまいました。
こちらの原因が特定できず困っていたところ、gdbでログを取得し、そこから落ちている箇所を特定できるかもしれないとありましたので実行してみましたが、なぜかコアファイルが作成されません。

以下サイトを参考にしながらgdbを設定しました。
https://sarface2012.hatenablog.com/entry/20101027

1. gdbをインストール

sudo yum install gdb

2. /etc/profileに以下を記載し、core file sizeをunlimitedに設定

ulimit -c unlimited > /dev/null 2>&1

3. /etc/httpd/conf/httpd.confに以下を記載

CoreDumpDirectory /tmp

 
4. サーバー再起動

5. エラーを発生させる

しかし、なぜか/tmpにcore.xxxxというようなコアファイルが生成されませんでした。
以下のメッセージが出力されるのですが、もしよければアドバイスいただけないでしょうか。。。よろしくお願いいたします。

[core:notice] [pid 4194] AH00052: child pid 4197 exit signal Segmentation fault (11) [core:notice] [pid 4194] AH00052: child pid 4198 exit signal Segmentation fault (11) [core:notice] [pid 4194] AH00052: child pid 4199 exit signal Segmentation fault (11) [core:notice] [pid 966] core dump file size limit raised to 18446744073709551615 bytes [suexec:notice] [pid 966] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [so:warn] [pid 966] AH01574: module rewrite_module is already loaded, skipping AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress t his message [lbmethod_heartbeat:notice] [pid 966] AH02282: No slotmem from mod_heartmonitor [mpm_prefork:notice] [pid 966] AH00163: Apache/2.4.6 (CentOS) PHP/5.5.38 configured -- resuming normal operations [core:notice] [pid 966] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。