Eventを使うことで、ほぼ全てのSQLを記録できます。 app/Config/Events.php に以下を追加します。 Events::on( 'DBQuery', static function (\CodeIgniter\Database\Query $query) { log_message('alert', (string) $query); } );
要件:PHP7.4以上とSSHが使えること(できればPHP8が望ましい) かたくなにクラウドとdockerをつかわないスタンス とりあえず以下の例は Xserver です 2023-02-21時点でCodeIgniter4の最新バージョンは4.4.5 独自ドメイン hoge.com にサブドメイン piyo.hoge.com を切って、そこに新しいサービスを作ると仮定 サーバ上のパスは /home/myaccount/hoge.com/public_html/piyo になる php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'edb40769019ccf227279e3bdd1
こんにちは。エンジニアのマサオです。 今回は個人的に大好きなPHPフレームワーク「CodeIgniter4」について実践的な日本語の入門記事がまだ少ないようなので、せっかくの機会ですからご紹介したいと思います。 CodeIgniter(コードイグナイター)とは? 軽量・シンプルかつエレガントで、フル機能のwebアプリケーションを制作するためのフレームワークです。(公式サイトより。翻訳がイマイチな部分はお許しください。) 2021年の国内PHPフレームワークのトレンドでは圧倒的に多いのが「Laravel」。 次に多いのは「CakePHP」、その次が「Symfony」。 そしてそのさらに下が「FuelPHP」「CodeIgniter」との統計です。 海外だとCodeIgniter(以後CI)は3位あたりの人気のようです。 筆者が開発する際に心掛けていることは、『できる限り素早い応答速度』『保守
はじめに 原則としては内部向けですが、自分もはまった経験がある部分なので、もしかしたら役に立つかもしれないので公開します。(CodeIgniter3以下でも基本は同じですが、関数名の変更があるので注意してください:例えばCI3までは add_field → CI4 では addField ) おそらく一番参考になるサイト(英語) データベース管理の流れ CodeIgniter4のデータベース管理の流れを整理してまとめておきます。 php spark migrate:create <管理ファイル名> 管理ファイルを編集して up にアップデート内容を記述 管理ファイルを編集して down にアップデートを戻す内容を記述 php spark migrate で完了! php spark db:table などで変更内容を確認 migrate:create で管理ファイル名の連番オプションを変更
はじめに クエリ結果の生成に使用する getResultArray 及び getRowArray の処理を拡張したかった。 Creating Core System Classes — CodeIgniter 4.2.10 documentation 上記に該当する箇所ではなかった為、CodeIgniter Forums の情報を基に独自のドライバーを作成することでデータベースクラスの拡張を行なった。 実行環境 PHP 8.1.6 CodeIgniter 4.2.10 PostgreSQL 13.9 独自ドライバーの作成 標準ドライバーで準備されているクラスファイルを全て用意する。 PostgreSQL の場合 CodeIgniter4/system/Database/Postgre at develop · codeigniter4/CodeIgniter4 Builder.php Co
TOP コムセント 技術情報 画像操作の時にスマホ縦画像が回転して保存されてしまう問題を解説【CodeIgniter4】 画像操作の時にスマホ縦画像が回転して保存されてしまう問題を解説【CodeIgniter4】 2023.09.12 バックエンド この記事は2023/07/31に作成されました。 CodeIgniter4には、画像操作に関して便利なヘルパーやライブラリが提供されています。画像をアップロード後にリサイズと切り抜きを行おうとしたときに、操作する元画像によって閲覧しているときの画像状態から90度回転している等、画像の角度に関する問題が起きてしまいました。調べたところ、この原因は元画像のEXIF情報(orientation)にあることが分かりました。今回はこの問題について解説していきます。 EXIFとは? EXIF(Exchangeable Image File Format)は
脆弱性診断を受けた際、 リクエスト改竄に対する適切な例外処理が実装されていないと (500 Internal Server Error はダメ) 指摘されたのでやむを得ず強引に対応した記録。 実行環境 PHP 8.2.12 CodeIgniter 4.5.1 サンプル <?php echo form_open('/'); ?> <button type="submit">Submit</button> <?php echo form_close(); ?> <form action="http://localhost:8080/" method="post" accept-charset="utf-8"> <input type="hidden" name="csrf_test_name" value="xxxxxxxxxx"> <button type="submit">Submit</
概要 PHP 8、 Codeigniter4 Codeigniter4で、ob_flash() flush() を使っても処理途中での結果出力がされない Codeigniter4を通さないでob_flash() flush()を実行するとちゃんと処理途中で結果表示できる 対処方法 ob_end_flush(); を途中出力したい処理の前でコールする。 原因 app/Config/Events.php Events::on にてob_start()がコールされている。 通常の処理を実行すると、ob_start()で出力がバッファされるため、一旦 ob_end_flush() で内部バッファの内容を出力してしまう必要がある。 出力バッファはスタッカブルなので、ob_end_flush()をせずに
最近はCodeIgniter4を使って開発しているのですが、公式のコード整形ツールがありました。 試しに使ってみたら、かなりコードが整形されたのでメモがてら記します。 github.com インストール composerを使ってインストールします。 とりあえず開発環境で使いたいだけなので、--devしました。 $ composer require --dev codeigniter/coding-standard または、wgetで持ってきたcomposer.pharを使ってインストールも可能です。 $ php composer.phar require --dev codeigniter/coding-standard 何が使われているか php-cs-fixerでコード整形が実行されます。 composer.jsonを確認したところ、"friendsofphp/php-cs-fixer
はじめに 「CodeIgniterって軽量で高速」というイメージがあったのですが、気になってみたので実際にLaravelと比較してどれくらい速いのかを検証してみようと思います。 MacBook Air 2020 Apple M1 16GBメモリ MacOS Sonoma 14.0 kool.devでDocker開発環境構築 PHP 8.2 MySQL 8.0 Laravel 10.2.10 CodeIgniter 4.4.3 同じ最適化をする composer install --optimize-autoloader --no-dev ApacheBenchで計測 以下のシナリオで検証 コントローラークラスで素朴に echo 'HELLO WORLD'; 10000レコードあるproductsテーブルを作成しておき、コントローラークラスで全件取得 10000レコードあるproductsテ
TOP コムセント 技術情報 Codeigniter 4をインストールした後に行う手順について Codeigniter 4をインストールした後に行う手順について 2023.12.20 バックエンド この記事は2023/10/01に作成されました。 はじめに Codeigniter 4はなるべく制作者の手間を省くように作られていますが、それでも自分で設定をおこわななければならないポイントはいくつかあります。 そんなCodeigniter 4をインストールした直後にやるべき設定ファイルの操作についてまとめました。 1.app/Config/App.phpの設定 この場所ではサイト基本的な設定を行います。 そもそもここを設定しないとアクセスすらできないので、一番最初に行いましょう。 ■$baseURL の設定 サイトのURLを指定します。これを正しく指定しないと、まずサイトにアクセスできません。
この記事を書いた背景 レンタルサーバーのinetdなど、Apacheの設定によってはCodeIgniter4を手動インストールしても「No input file specified.」が出て/によるパスパラメータの受け渡しが上手く動かない場合があります。 その解決方法についてのメモ記事です。 原因(推測) .htaccess内のRwriteRudeでindex.phpにパラメータを受け渡す指定で物理ファイルの存在チェックを行う動作と被るために標題のエラーが表示されると思われる。 解決方法 index.php以降に渡す文字列をパラメータとして認識させるために下記のように/public/.htaccess内の記述に?を挟むことで対処しました。 RewriteRule ^([\s\S]*)$ index.php?/$1 [L,NC,QSA] まとめ ちょっとしたことですが、エラーメッセージからす
CodeIgniter Advent Calendar 2021 koolを使うと、DockerでCodeIgniter4の開発環境を簡単に構築できます。 動作確認環境 CodeIgniter 4.1.5 PHP 8.0.10 MySQL 8.0.27 kool 1.14.0 Docker Desktop 4.2.0 macOS 10.15.7 koolの動作には、Docker EngineとDocker Composeが必要です。 Dockerを起動した状態で以下の作業を行って下さい。 1. kool CLIのインストール 以下のコマンドを実行し、koolコマンドをインストールします。 Hello, we are gonna install the latest stable version of Kool! Downloading latest binary (kool-darwin-
前回の記事「Codeigniter4.4が出ていたので簡単なフォームを作りながら基礎を学んでみる」では簡単なフォームを作りながらCodeIgniter4.4の基本的な書き方を学びました。 ViewはCodeIgniterデフォルトのものでしたが、自前でエスケープ処理を追加したりPHPタグを多く書く必要があるため、テンプレートエンジンのTwigを導入していこうと思います。 CodeIgniter3とTwigの連携についてはこちら 筆者の環境 PHP7.4.33 CodeIgniter4.4.1 codeigniter-ss-twigのインストール 今回は下記のリポジトリを使っていきます。 https://github.com/kenjis/codeigniter-ss-twig CodeIgniter Simple and Secure Twig This package provides
この記事で行うこと React(フロント) + CodeIgniter4(バックエンド)を利用 CodeIgniter4のインストール・設定から、Reactのインストール・設定、最終的にフロント側からバックエンド側へデータの送受信ができている状態までの環境を構築する その他の環境 macOS Monterey(macbook air 2020 ,M1チップ) VisualStudio Code 参考にしたサイト記事 英語の記事ですが書いてくださった方に感謝 構築スタート バックエンド(CodeIgniter4/以下ci4) プロジェクトを作成するディレクトリ移動 私の環境ではMAMPを利用していたのでhtdocsでプロジェクトを作成しました。 ここは自身の環境に合わせてディレクトリを移動してください そしたら、フォルダを作成してください。 任意名でOKです。(今回は、 myProject
PHPフレームワークのORMを徹底比較!Eloquent(Laravel) vs Model/Entity(CodeIgniter4)PHPCodeIgniterLaravelORMEloquent はじめに 私は現在(2022/11時点)社内システム開発をメインに担当しています。 執筆時点で社内システムは10個以上存在し、各システムのフレームワークもバラバラです。 その中でも比較的採用数が多いのが Slim4+Eloquent と CodeIgniter(3 or 4) になります。 Eloquent はもともとLaravelフレームワークのORMとして提供されているサービスであり、多機能であることが特徴です。 一方、CodeIgniter はLaravelに比べて軽量でパフォーマンスが良いのが特徴です。 バージョン4になってからは様々な機能が追加され、3以前でも存在していた Model
前回はCodeIgniter4を使ったシンプルなページネーションを紹介しましたが、今回はBootstrapとjQueryのDataTAblesを使ったページーションをを紹介します。 表示件数、サーチ、ソートなどが簡単に実装できました。ただ読み込み速度が遅いという欠点がありますが、その点については次回にJSONを使った方法を紹介していきたいと思います。 環境はPHP7.3.19, CodeIgniter4.0.4, MariaDB 10.3.27です。 Bootstrap、jQuery、DataTablesの準備 bootstrap-pagination.phpというファイルをViewsフォルダに作成します。 このファイルにテーブルを表示させていきます。 下記ページよりBootstrapをhtmlファイルに貼り付け、CDNで読み込みます。 jQueryはBootstrapの前に読み込むように
TOP コムセント 技術情報 CodeIgniter4のページャー機能からVueでカスタマイズしやすいデータを送る CodeIgniter4のページャー機能からVueでカスタマイズしやすいデータを送る 2023.01.25 バックエンド フロントエンド この記事は2022/09/30に作成されました。 データを一覧表示させるときにページャーを配置する機会は多いと思います。 弊社ではCodeIgniter(以降CI4)というPHPフレームワークを使用していますが、その中ではページャーを作ってくれる機能があります。 公式の使い方ではViewファイル内で$pager->links(); などを使ってHTMLが組みあがった状態で出力されます。 これだとVueファイルなどで使用するときにカスタマイズがしにくいです。 CI4のページャー機能を利用しながら、Vue側でカスタマイズしやすい方法を紹介してい
CodeIgniter4でのマイグレーションを使ってみます。 CodeIgniter3でもマイグレーションクラスのサポートはありましたが、 そのベースからどれくらい変わったのでしょうか。 マイグレーションを試す ファイルの作成からロールバックくらいまでを簡単に見ていきます。 マイグレーションファイルの作成 sparkコマンドで雛形を作成してみます。 migrate:createは非推奨になっていたので、make:migrationを使います。 # php spark make:migration AddProduct --suffix CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-07-27 08:41:45 UTC-05:00 File created: APPPATH/Database/Migrations/2021-
前記事で作成した環境にCodeIgniter4をcomposerからインストールしていく。CodeIngniter4インストールに必要となったものまとめは一番下に書いていますので、結論だけ知りたい場合は途中読み飛ばしてください。 kojikoji75.hatenablog.com kojikoji75.hatenablog.com (1回目)CodeIgniter4のインストールコマンド (エラー)Install or enable PHP's curl extension / intl extension. (2回目)CodeIgniter4をインストール (エラー)The zip extension and unzip/7z commands are both missing, skipping. (3回目)CodeIgniter4をインストール (エラー)it is missing
viewからでもControllerでもModelでもどこからでも読み込める変数を作る。 App.phpの頭に変数を仕込む。 class App extends BaseConfig { public static $vars = []; 適当なhelperを作り、そこに設定用と読み込みようの関数を作る。例えばbase_helper.phpを作り、 function set_vars($key, $data = null) { if (is_int($key)) return false; if (is_string($key)) { Config\App::$vars[$key] = $data; } elseif (is_array($key)) { foreach ($key as $k => $v) set_vars($k, $v); } } function get_var($
参考 It is very important to always remember that environment variables contained in your .env are only replacements for existing data. This means that you cannot expect to fill your .env with all the replacements for your configurations but have nothing to receive these replacements in the related configuration file(s). The .env only serves to fill or replace the values in your configuration files.
前回PostgreSQLとの接続を行いましたが、今回は、MS SQL SERVERとの接続を試しました。 MS SQL SERVERのサポート Mysql, PostgreSQLと同様にデータベースを追加しようとしましたが、うまく行きませんでした。 公式には、Server Requirementsとして MSSQL via the SQLSRV driver (version 2005 and above only) MSSQL via the pdo driver とあるのですが、うまくできず。 このCodeIgniterのフォーラムでは、まだMSSQL用のドライバーがないということでした。 MSSQL用のドライバーはありませんので、app/Modelsを使用しない接続となりました。 SQLSRVの準備 こちらを参考にさせていただきました。 作業としては、下記になります。 Microso
codeigniter.com Modules CodeIgniter 4で、modulesフォルダを設置する場合で、わかったことを書きます。 Info 自分自身の備忘録として、書いています。 まだ十分に把握してなかったり、勘違いしている部分もあるかもしれません。 ご了承ください。 使用環境 Name Version PHP 7.4.18 CodeIgniter 4.1.2 フォルダ構造 /acme /Blog /Config /Controllers /Database /Migrations /Seeds /Helpers /Language /en /Libraries /Models /Views 上記のようなフォルダ構造を想定していますが、acmeはmodulesに置き換えています。 app/Config/Autoload.php public $psr4 = [ APP_NAM
<?php namespace App\Models; use CodeIgniter\Database\BaseBuilder; use CodeIgniter\Database\ConnectionInterface; abstract class Model { /** * @var string */ protected string $table; /** * @var ConnectionInterface */ protected $db; /** * @var BaseBuilder */ protected BaseBuilder $builder; public function __construct(?ConnectionInterface $db = null) { if ($db === null) { $this->db = db_connect(); } e
新しいCodeIgniter使ってみませんか? CodeIgniter4(以下、CI4。前バージョンはCI3と記します。)、ついに正式リリースされましたね。 Namespaceが採用されたことでClassを作りやすくなったり、CI3よりかなり現代風な実装になった感じです。 自分の会社でもCI3は開発案件で利用していて大変役立っていましたが、CI4ではどうなのでしょうか? 早速触っていきたいと思います。 CI4の動作環境 とりあえずPHP 7.2以上環境に php-intl php-json php-mbstring php-mysqlnd libcurl あたりを導入しておくと良いと思います。 DBはMySQL(5.1以上。もちろんMariaDBでもOK)、PostgreSQL、SQLite3が対応しています。 これらはRedHat/CentOS系の方はyumやdnfで、Debian系の方
このチュートリアルではCodeIgniter4でのログイン認証システムの作成方法を解説しています。サインアップ、ログイン、ログアウトという一連の流れを確認します。
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く