クラスが見つからないエラー「Fatal error: Class ‘○○○’ not found」が発生したとき、その典型的な原因とその対処方法をチェックリスト形式で紹介します。 vendor/autoload.phpをrequireしているか? composer installで必要なライブラリをインストールして、いざ使おうとしたらFatalになるパターンです。たとえば、guzzlehttp/guzzleをインストールして、
今年からAWSを使う機会が増えてきました。 で、近々PHP 7.4がインストールされたWebサーバーを用意する必要がありそうなので、 事前に検証した内容をまとめておきたいと思います。 2021年2月10日 追記 @yutaro1985様より、EC2へのPHP7.4は以下のコマンドでインストール出来るとご指摘いただきましたので、追記させていただきます。 sudo amazon-linux-extras install php7.4 目標 ブラウザでphpinfo()の内容を表示して、PHPのバージョンが7.4であることを確認する 1.インスタンスの作成 利用するインスタンスのタイプは「Amazon Linux 2 AMI(HVM), SSD Volume Type」 検証なのでインスタンプのタイプは「t2.nano」にしました。 基本的に設定値はデフォルトにして、セキュリティーグループのイン
devオプションで開発環境でのみインストールするようにしている。packagistの記載ではglobalオプションをつけているが、composerのホームディレクトリにインストールしない場合は不要。 インストールが完了すると、codesnifferを使用できるようになるので、ヘルプを表示してみる。 $ cd プロジェクトフォルダパス $ ./vendor/bin/phpcs -h Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors] [--cache[=<cacheFile>]] [--no-cache] [--tab-width=<tabWidth>] [--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFi
0 fgets <internal>:-1 1 <main> <internal>:-1 0 fgets <internal>:-1 1 <main> <internal>:-1 0 fgets <internal>:-1 1 <main> <internal>:-1 ... 0 time_nanosleep <internal>:-1 1 PhpProfiler\Lib\Loop\LoopMiddleware\NanoSleepMiddleware::invoke /home/sji/work/php-profiler/src/Lib/Loop/LoopMiddleware/NanoSleepMiddleware.php:33 2 PhpProfiler\Lib\Loop\LoopMiddleware\KeyboardCancelMiddleware::invoke /home/sji/
概要 今まで意識して使っていなかったが、テストを作成する際に調べていたら結構重要なことだったので、忘備録。 PHPでいうと assertSame => 「===」 assertEquals => 「==」 となる。 そのため、型までしっかり判定したいというとき(ほとんどの場合そうだと思うが)は assertSameを使うと良い。 追記 assertEquals をわざと利用する場合は、背景、理由についてコメントを残すことを進める。 そうしなかった場合、 assertSameにしたら、ユニットテストがおかしくなったなど起きる可能性があるため。 そもそもそのようなテストがよくな(ry
やりたいこと Laravel 6.xをつかってるがLaravel8.xも出たし、そろそろアップグレードしようと思いやってみた手順です さすがに、でてすぐの8だと、サードパーティパッケージがまだ対応していないのが多いので7.xにします 自分がやったことをつらつらメモです PHPのバージョン PHPのバージョンが7.25が必須になりました Laravel6の時点で7.2が必要でした 今回自分は非対象でした パッケージ [影響高] composer.jsonの下記パッケージを書き換えます laravel/frameworkを^7.0へ nunomaduro/collisionを^4.1へ phpunit/phpunitを^8.5へ laravel/tinkerを^2.0へ facade/ignitionを^2.0へ また、自身が使っているパッケージが7.xに対応しているか確認します 一つ一つ確認
PHP8.1 / PHP8.0 / PHP7.4 2019/11/28にPHP7.4.0がリリースされました。 ということで、ここではドキュメント化されている新機能や変更点を片端から試してみます。 これら以外にもドキュメント化するほどでもない軽微な変更が多々入っているはずですし、単なるバグ修正も山ほどあるのですが、今回はそのあたりには触れません。 把握しきれていませんしね。 インストール 古いXAMPPが入っていたらディレクトリまるごと削除。 最新のXAMPPをインストール。 Windows版PHPからVC15 x64 Thread Safeをダウンロード。 解凍したディレクトリをpath\to\xampp\phpにまるごと上書きコピペ。 php.ini-developmentをphp.iniにコピー。 php.iniのextension_dirをエクステンションが入ってるディレクトリへの
導入 PHPで配列を結合するための方法は幾らかありますが、それぞれ微妙に挙動が異なるので、ここでは違いが分かりやすいようにまとめてみます。
GitHubにダウンロードしてすぐ試せるサンプル置きました↓ https://github.com/mpyw-yattemita/php-auth-examples TLS暗号化を使用できる場合 (https:// の場合) この場合は生のパスワードをそのままクライアント側から送信してもらって構いません. なおパスワードをそのまま平文でスクリプト中に書くことはあまり望ましくないので,下準備としてあらかじめ以下のコマンドを実行してパスワードハッシュを作成しておいてください. mpyw@localhost:~$ php -r 'echo password_hash("パスワード", PASSWORD_BCRYPT), PHP_EOL;' $2y$10$TThG3fsMJegLJHzVQbz8IeHhvpgBg7P5j6gjQWEUOrKKCtsA9L87G Basic認証 危ないと言われるBa
はじめに PHPには「Trait」という機能があります。 通常のクラスの継承は、1つのクラスしかできませんが、traitを使用すれば、複数のクラスの変数や関数などを使用することができるので、とっても便利です。(説明ざっくり) が、実際にコーディングしていて気付いたのですが、traitのコンストラクタにはちょっと、気を付けた方が良さそうです。 というのも、traitのコンストラクタは、実装方法によっては呼ばれない可能性が非常に高いです。 検証 実際に検証してみました。今回はLaravelを採用します。 やりたいこと クラス、抽象クラス、traitそれぞれにコンストラクタを設け、それぞれのコンストラクタをすべて実行する パターン1:抽象クラスとtraitの同時実装 まずは、抽象クラスとtraitを作成してみます。
概要 Laravel では様々なグローバルヘルパ関数が用意されています。 https://readouble.com/laravel/7.x/ja/helpers.html 今回は自作のヘルパ関数を作る方法をご紹介します。 環境 PHP 7.4.5 Laravel 7.9.2 やり方 自作のヘルパファイルを作成して、オートローダーに読み込んでもらいます。 自作のヘルパファイルを作成する app/helpers.php を作成します。 (場所はどこでも良いです) <?php declare(strict_types=1); if (! function_exists('hello')) { /** * @return string */ function hello(): string { return 'Hello World.'; } }
テストとかどうでも良いから自動操作がしたい! seleniumは本来phpUnitなどと組み合わせてテストを自動実行するために使われるのだが私はただブラウザの自動実行を体験したいだけ。 なので今回は『とりあえず自動操作を体感』したいという人に向けて発信する。 seleniumとは これをご覧になるのが一番。コマンドを叩くだけで勝手にブラウザが起動して入力・検索を行っている。本記事ではここまでを目指す。 環境構築 今回はPHPで自動操作のプログラムを書き、Chromeで自動操作を実行する。 公式ではphpでSeleniumを動かすドライバーがないため、Facebookの中の人が作ったSeleniumのPHP版、facebook-webdriverを使用する。(SNSのFacebookサービスとは無関係です) 作業ディレクトリの作成 とりあえず実行したいんじゃ、という方のためなので以後はこのフ
「はじめに」の「はじめに」 2016年版としてマイグレーションしました。 特にこだわりが無い場合は、こちらを参照してください。 はじめに こんな感じで資料を作ろうとしていた草稿です。 文中のソースコードの正誤とかは見きれていません。 ツッコミとか有れば、よろしくお願いしますm( _ _ )m PHPUnitを使ったからといって、どんなソースコードもテストできる訳ではありません。 テストをし易いようにクラスを設計している必要があります。また、そのように設計していてもUnitテストに入れることの出来ない箇所は出てきます。Unitテストに入れることの出来ない箇所は出来ないと割り切らなければなりません。むしろ、どれだけのコードをUnitテストに入れることが出来るか? というのが設計者の腕の見せどころになるでしょう。 極論を言うと 「どんなクラスでも疎結合に実装していなければならない」 ということで
はじめに 新年になったので、開発環境のDockerをビルドし直したら、xdebugでのステップ実行ができなくなった。 調べてみると、xdebugのVersion3になって設定項目名が変更されてしまったため、以前の設定が無効になってしまったのが原因でした。 TL;DR 以下の設定で動きました。 ちなみにデバッガ(IDE=phpstorm, vscode)の方の待受ポートは9003に合わせる必要があります。 xdebug.log=/tmp/xdebug.log xdebug.mode=develop, debug xdebug.start_with_request=yes xdebug.client_host=host.docker.internal xdebug.client_port=9003 zend_extension=/usr/local/lib/php/extensions/no-
🐒 【2020/11/18 追記】2020/10/24 に Composer の v2 がリリースされました。 速度改善、PHP 7.4 以降対応、パッケージ名の厳名化、composer 経由の PEAR 利用の終了など変更点が盛り沢山です。そのため、急に動かなくなるパッケージが出てきています。パッケージマネージャー、Docker や CI などで composer を自動インストールしている人はデフォルトで v2 になるので要注意です。 各種主要パッケージの追随が落ち着くまでの間、バージョンを固定しておきたい場合は、composer 本体のインストールや更新は下記のように --version オプションでバージョンを指定してください。
composer install で the requested PHP extension intl is missing from your system と言われる解決方法 in Docker imagePHPComposerDockerdockerfile はじめに 自分が悩んだ順に書いていきます。無駄に長いです。 Dockerfileを扱ったのは今回が初めてです。初心者でも読みやすいと思います。 もっといい方法あるよというコメントお待ちしております。 エラー発生 nojimage/twitter-text-php Twitterが公式で出しているライブラリがPHPに対応していなかったために導入 ローカル環境で下記コマンドを打つ composer require nojimage/twitter-text-php しかし下記のようにエラーが
プロジェクトの環境構築にあたりphp7.1が必要ということで、 Homebrewにてphp7.3と共存環境構築した際のメモ。 いや本当に、ダウングレードって骨が折れる、と思い知ったので (なるべくならアップデートだけをしていけると平和ですよね)、 同じことで心と時間を消耗する方が1人でも減るように記録を残します。 エラー内容が dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib の方向けの記事になります! macOS Catalina php 7.3(デフォルト) zsh php@7.1を入れる Homebrewインストール Homebrewをインストールします。 (Homebrewインストールについてはたくさん記事あるので割愛します) インストールができたら、念の為ドクターコマンドをかけると安心感あ
日頃 CakePHP 関連のリポジトリーに送られてくるプルリクエストを眺めていると、実に多くの方が empty() を安易に使用しているのが目に留まります。実例をご覧ください。 ですが、空かどうかを検査するために empty() を使用するのは適切ではありません。代わりに ! 演算子の使用を推奨します。 !empty() の代わりには、何もせずに真偽コンテキストに渡すか (bool) による型変換が良いでしょう。これは CakePHP のコーディング規約にも書かれています。 empty() は検査対象が未定義であっても E_NOTICE レベルのエラーを発生させません。これは検査したい変数がひょっとすると未定義かもしれない場合には便利ですが、それ以外の場合には変数名の打ち間違いを見落としてしまう原因になりかねません。 もっとも、開発に IDE を利用している方は、自分がそんなミスをするはず
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く