php
環境 Laravel 5.5 PostgreSQL でも他のDBでも同じはず 現象 use RefreshDatabaseを使ってテスト毎にロールバックしているにも関わらず、データが残ってしまい後続のテストが落ちる。 原因 業務コードの方でDB::transaction()を使い、その中でDB::rollback()…
PHPUnitにはdataProviderという機能がある。 パラメタライズドテスト、またはテーブルドリブン(駆動)テストで書くための仕組み。 僕はずっとこの機能が使いづらくて、普通にforeachで回す方が良いのではと思っている。 今日たまたまdataProviderを推奨してい…
先日のPHP Conference 2018でこのようなLTがありました。 RegExp Error caused by PHP upgrade 5.6 to 7.2 スライドはLT用にシンプルなので、同じ発表者さんのQitta記事を見た方が伝わるかもしれません。 PHPを7.2にバージョンアップしたら正規表現でマッチ…
軽い気持ちでcomposer updateしたらテストが落ちて、その調査と暫定対応をしたのでメモ。 エラーログ PHPUnit\Framework\Exception: [2017-12-04 00:44:41] testing.ERROR: Session name cannot be empty, did you forget to call "parent::open()" in "Symf…
背景 null変数に添字アクセスするところで、落ちると思っていたら落ちなくてびっくりした。 環境 OSX 10.11.5 PHP 7.0.14 (cli) (built: Apr 1 2017 23:41:23) ( NTS ) Copyright © 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright © 1998-2016 Zend…
背景 Laravelアプリケーションでレコードをupdateするやり方が色々あり、戻り値の違いについて調べた。 結論 表にまとめた。 書き方 戻り値の型 更新対象がない時の戻り値 \DB::table(‘samples’)->where($where)->update($values) int(件数) 0 \App\Sample::…
背景 phpでスクリプトのタイムアウト上限を伸ばすには2つの方法がある。 set_time_limitを呼ぶ方法 php.iniもしくはini_setでmax_execution_timeを変更する方法 このうちset_time_limitのドキュメントにこのような記述がある。 デフォルトの制限値は 30 秒で…
背景 LaravelアプリケーションでSQLインジェクションのテストを行っていて、わざとSQLインジェクションが起こるようなコードを書いたのに実行されなくて調べた。 (まずはSQLインジェクションが発生することを確認してから、その対応を入れて発生しなくなった…
MySQLとLaravelの話です。 MySQLのSQL_MODEにONLY_FULL_GROUP_BYが指定されていると、group by無しでcountとorder byを同時に使うと以下のエラーが発生します。 ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP colum…
ini_get('mbstring.internal_encoding') と mb_internal_encoding() の値が異なるらしいので調べてみました。 後半ではmbstring.language や mb_regex_encoding との影響についても記述します。 ソースを読んで自分なりに解釈しましたが、間違い等あればご指…
地味だけど意外と重要な構文チェック。「php -l 対象ファイル」で確認するアレです。 ブラウザで確認する段階になってエラーが出たりするとイラっとするので、 未然に防げるのはストレス軽減になります。ちなみに「vim php 構文チェック」とか「vim php 文法…
(キーワード:file_put_contents file_get_contents)5.2.6でBugFixされています。 PHP: PHP 5 ChangeLog Fixed bug #43182 (file_put_contents() LOCK_EX does not work properly on file truncation). (Ilia) なので5.2.6以降なら動きますが、5.2.6未満なら…
サーバーにライブラリ(php-mysql)を入れようとしたら次のようなエラーが出た Error: Missing Dependency: php-common = 5.1.6-34.el5_8 is needed by package php-mysql-5.1.6-34.el5_8.i386 (updates)結論としては取得元のリポジトリが異なっていたから。 …
ソフトウェアテストの勉強中&実際の案件に活用中。 スモークテストとは ソースコードに修正が入るなどして新しくビルドが必要になった際に、 そのビルドが正常に終了していることを確認するためのテストです。簡単に言えば、「ビルドによってどこか動かなく…
v2.3は非推奨となり今後は互換性のあるv2.4か新しいv3.0にしましょうってことらしい。 公式はこちら。 Migration Guide: Moving from v2.3 APIs to v2.4 & v3.0 - Google Analytics — Google Developers Management API v2.3 has been shutdown. Queries mad…