phalcon3から5にバージョンアップした際のページネーション対応

phalcon3から5にバージョンアップした際にページネーションで発生したエラー、Deprecated対応

Call to undefined method Model::getPaginate()

Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate()のエラー対応

total_pages

PHP Notice:  Access to undefined property Phalcon\Paginator\Repository::total_pages

https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator
total_pagesがなくなって、lastを使う

before

PHP Notice:  Access to undefined property Phalcon\Paginator\Repository::before

https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator
beforeがなくなって、previousを使う

そのほかのアップグレードで発生したエラー対応

【WordPress】SiteGuardのログイン認証画像が表示されないときの対応

WordPressのプラグインでSiteGuardを使用していて、急にログイン認証画像が表示されなくなりました。
ログインできなくて困る。。

ログインできない現象

ログイン画面の認証画像が表示されず、何を入力していいかわからない。
404 Not Foundで画像が表示されていないようです。

ログイン画面でSiteGuardの認証画像が表示されない

ログインできるように対応

サーバにSSHでログインしてプラグインを無効してください。
プラグインを無効にするには、ディレクトリ名を変更すればOKです。

wordpressのrootディレクトリに移動してから、

$ mv DocumentRoot/wp-content/plugins/siteguard DocumentRoot/wp-content/plugins/siteguard.hold

これでSiteGaurdが無効になってログインできます。

再度SiteGuardの画像認証を有効

ログイン後に先ほど変更したディレクトリ名を元に戻します。

$ mv DocumentRoot/wp-content/plugins/siteguard.hold DocumentRoot/wp-content/plugins/siteguard

そのあと、SiteGuardの設定から画像認証をONにします。
が、エラーメッセージが表示されてしまいます。

SiteGuardの画像認証の設定ONが画像ファイル書き込みで失敗

認証画像の書き込みに失敗しているので、書き込み先のディレクトに権限を付与。

で、どこに認証画像を書き出すのか?
SiteGuardのバージョン1.7.5では「wp-content/siteguard/」配下に画像を書き出します。

wp-content配下にそもそもsiteguardというディレクトリーがないので作ります。
wp-contenfの権限を上げるのは微妙なので。

$ mkdir wp-content/siteguard
$ chmod 777 wp-content/siteguard

※所有者:グループは適時変更してください。

これで、画像認証をONにできます。
お疲れさまでした!

Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate()のエラー対応

Phalcon 5.xにバージョンアップした際に以下のエラーが発生

Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate()
#0 [internal function]: App\Controllers\RecipeController->searchAction()
#1 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->callActionMethod()
#2 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->dispatch()
#3 {pathto}/public/index.php(30): Phalcon\Mvc\Application->handle()
#4 {main}

getPaginate()エラーの対応方法

Phalcon 4.xにアップグレードされたときにfunction名が変わったようです。
https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator

getPaginate()からpaginate()に変更

call_user_func()エラー発生

続いて以下のエラーが発生

call_user_func(): Argument #1 ($callback) must be a valid callback, first array member is not a valid class name or object
#0 [internal function]: call_user_func()
#1 {pathto}/controllers/RecipeController.php(65): Phalcon\Paginator\Adapter\Model->paginate()
#2 [internal function]: App\Controllers\RecipeController->searchAction()
#3 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->callActionMethod()
#4 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->dispatch()
#5 {pathto}/public/index.php(30): Phalcon\Mvc\Application->handle()
#6 {main}

これは、new Phalcon\Paginator\Adapter\Model()の時に渡すパラメータが間違っているため。
phalcon 5.xの使い方に合わせて以下の3つのどれかに修正する必要があります。

注意点として、Phalcon\Paginator\Adapter\Modelは多数のレコードのページネーションに使わないでとなっているので、DBからデータを取得してページネーションを使うならPhalcon\Paginator\Adapter\QueryBuilderにしとくのが良さげです。

RLogin、VS CodeでSSH接続できない!?SSH2のエラー「publickey,gssapi-keyex,gssapi-with-mic」の対処

RLoginやVS CodeでSSH接続できなかったので、その対処法。

経緯

PCを交換しWindows10からWindows11に変更。

RLoginでLinuxサーバーにSSH接続を試すも失敗。

その後、VS CodeのRmote SSHでも失敗。

下記2種類のエラーでログインできなかったので対処法をメモ。

  • gssapi-with-micエラー
  • SSHエラー

gssapi-with-micエラー

gssapi-with-micのエラー内容

RLoginのエラー内容

RLoginでログインしようとした際に、以下のエラーが発生。

SSH2 User Auth Failure "publickey.gssapi-keyex,gssapi-with-mic" Status=1004
Send Disconnect Message...
gssapi-with-mic({サーバーのIP})

VS Codeのエラー内容

VS CodeのRemote SSHを使用し、サーバーにログインしようとした際に以下のエラーが発生。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

gssapi-with-micエラーの対処法

調べてみるとユーザー名が間違ってたりするとこのエラーになるみたいなんですが、今回は違う理由でした。

ただの秘密鍵の指定ミスw

正しい秘密鍵を使用していなかったのでエラーでした。

秘密鍵(PrivateKey)を忘れていないか、指定ミスがないか確認してみましょう。

SHAエラー

SHAのエラー内容

RLoginで以下のエラーが発生。

SSH2 User Auth Failure "publickey.gssapi-keyex,gssapi-with-mic" Status=1004
Send Disconnect Message...
publickey(rsa-sha2-256), gssapi-with-mic({サーバーのIP})

You may need to change the ssh-rsa key sign algorithm SHA1 to SHA2-256/512

SHAエラーの対処法

公開鍵、秘密鍵がSHA1で作成されていて、それを使用しているためエラー。
セキュリティ的にもSHA2で作成しなおしたほうが良いです。

どうしても、今あるキーでログインしたい場合は、RLoginの設定を一時的に変更してログイン。

変更方法は以下。

  1. サーバーを選択し、「編集」ボタンをクリック
  2. 左メニューから「プロトコル」を選択
  3. 「RSA2認証鍵の署名方式」を「SSH1」に変更し、「OK」ボタンをクリック

これでログインできるようになりました。

それでもログインできない場合は、「known_hosts」に書き込まれた内容を削除してみてください。

・削除方法

  1. 「C:/Users/{user name}/.ssh/known_hosts」を開き、対象のサーバの記述を削除。

SSH1でログインできたからといってそのままにしておかず、早めにSHA2に変更しておきましょう!

その際にサーバー側がOPENSSH7.2以前だとSHA1のみのようなので、OPENSSHのバージョンも確認し必要ならアップデートしておきましょう。

・OPENSSHのバージョン確認コマンド

ssh -V

Windowsのターミナルソフト「RLogin」の導入方法。見やすくて便利なターミナル!

Windows用のターミナルソフト「RLogin」を使用する方法をご紹介!

サーバーにSSH接続して、コマンド実行することができます。
結構見やすくて便利です。

RLoginを導入

導入は簡単です!ダウンロードして実行でOK。

インストール不要で使うことができます。

RLoginをダウンロード

Githubに実行プログラムがあるのでダウンロード。

https://github.com/kmiya-culti/RLogin/releases/

ダウンロードしたZipを解凍

「rlogin_x64.zip」のようなZipファイルがダウンロードされたと思うので、それを解凍。

解凍場所はどこでも大丈夫です。

RLogin.exeを実行

解凍したファイルに「RLogin.exe」があるので、それを実行すればRLoginが立ち上がります。
インストールの実行は不要です。

RLoginのマニュアルはこちら
https://kmiya-culti.github.io/RLogin/