Fuel requires Sodium support in PHP

FuelPHP 1.8.2を設置したらエラーが出た。

ERROR --> shutdown - Fuel requires Sodium support in PHP. Either use PHP 7.2+, install the libsodium PECL extension, of the sodium-compat composer package! in fuel/core/vendor/paragonie.php on 33

Sessionが動いていない様子。

エラーメッセージでググると仲間を発見。ありがたい。

qiita.com

ファイルを設置してrequireすればよいとのこと。

私の環境ではrandom_compatは入っていたのでsodium_compatのみ真似する。

ファイルのダウンロード先が書いていなかったので適当にググる

それっぽいところで最新の1.12.0のzipをダウンロード。

github.com

設置してrequireしたら動いた!よかった!

でもせっかくなのでcomposer使いたい。状態を元に戻してまたチャレンジ。

composer.jsonのrequireの配列の最後に以下を追加

"paragonie/sodium_compat": "1.*"

1.*にしたのは、さっきのサイトの履歴の雰囲気から判断。(ここってみんなどうやって決めてるの。。?)

アップデートを実施。

php composer.phar update --prefer-dist

さっきと同じ最新版がインストールされて、動作確認したらちゃんと動いた!よかった!

XREAでFuelPHPを使ったメモ2

前回記事

usaing.hateblo.jp

またXREAFuelPHPをインストールしたくなったのでやった。

前回の反省を生かし、SSHですすめていきたい。

FuelPHPのマニュアルの通り、以下を実行

git clone git://github.com/fuel/fuel.git .

入った!

次に更新?

oil refine install

    -bash: oil: command not found

怒られた。ドットスラつけてみよう

./oil refine install

    -bash: ./oil: Permission denied

むむ。

実行権限追加しよう

chmod u+x oil

./oil refine install

    ./oil: line 1: ?php: No such file or directory
    ./oil: line 2: /BACKUP: Is a directory
    ./oil: line 3: CHANGELOG.md: command not found
    ./oil: line 4: CHANGELOG.md: command not found
    ./oil: line 5: CHANGELOG.md: command not found
    ./oil: line 6: CHANGELOG.md: command not found
    ./oil: line 7: CHANGELOG.md: command not found
    ./oil: line 8: CHANGELOG.md: command not found
    ./oil: line 9: CHANGELOG.md: command not found
    ./oil: line 10: CHANGELOG.md: command not found
    ./oil: line 11: fuel/: Is a directory
    ./oil: line 13: /BACKUP: Is a directory
    ./oil: line 14: CHANGELOG.md: command not found
    ./oil: line 15: fuel/: Is a directory
    ./oil: line 16: syntax error near unexpected token `php_sapi_name'
    ./oil: line 16: `if (substr(php_sapi_name(), 0, 3) == 'cgi')'

PHPだと思われていない感じなのでつけてやろう

php ./oil refine install

    Content-type: text/html; charset=UTF-8

    The use of oil is not supported when running php-cgi. Oil needs php-cli to function!

あーなんか見たわ前にこのエラー。指定してあげればいいんだよね。

/usr/local/bin/php71cli ./oil refine install

    No composer autoloader found. Please run composer to install the FuelPHP framework dependencies first!

コンポーザがないの?はいはい。

/usr/local/bin/php71cli composer.phar update

    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 15 installs, 0 updates, 0 removals
      - Installing composer/installers (v1.7.0): Downloading (100%)
    後略

成功!

では再度チャレンジ

/usr/local/bin/php71cli ./oil refine install

    Made writable: /virtual/xxx/yyy/fuel/app/cache
    Made writable: /virtual/xxx/yyy/fuel/app/logs
    Made writable: /virtual/xxx/yyy/fuel/app/tmp
    Made writable: /virtual/xxx/yyy/fuel/app/config

やっと成功!

あとは前回と同じことをちょこちょこやって、

config.phpを最低限修正。(language=ja・default_timezone=Asia/Tokyo)

今回は独自ドメインの下にディレクトリ作って設置するので /public_html/ドメイン/新しいディレクトリにFuelPHPのpublicの中身をぶちこむ。

.htaccessの上の方の「Options +FollowSymLinks -Indexes」でエラーがでるのでコメントアウト

index.phpのAPPPATH・PKGPATH・COREPATHのパスを修正。

ブラウザで「ドメイン/新しいディレクトリ」で表示された。

できた!

pem→ppkまたはppk→pem(WinSCPを使用)

WinSCPで使うためにpemをppkに変換したくなったり、

ppkしか持っていないのにpemが欲しいって言われたりした時に。

・pemからppkを作る

WinSCPを起動。ログインウィンドウの左下にある「ツール」から

「PuTTYgen を実行」を選択。

PuTTY Key Generatorが起動するので、

「Load」ボタンをクリックして、

「All Files」を選んで

pemファイルを読み込む。

「Save private key」ボタンをクリックして

ファイルを作る。

・ppkからpemを作る

WinSCPを起動。ログインウィンドウの左下にある「ツール」から

「PuTTYgen を実行」を選択。

PuTTY Key Generatorが起動するので、

「Load」ボタンをクリックして、

ppkファイルを読み込む。

メニューの「Conversions」の「Export OpenSSH key」をクリックして

ファイルを作る。(拡張子の.pemは自分で足そう)

SendGridで最初に行う設定変更

EC2からちょっとメールを送りたいだけの時とかに、SendGridを使う際、いつもはまるのでメモる。

Settings→Mail Settings→Plain Contentはデフォルトが「OFF」だけど、

これだとHTMLメールが送られてしまうので、「ON」に変更しよう。

Setting→Tracking→Click Trackingはデフォルトが「ON」だけど、

これだと本文に記載しているURLがSendgrid経由になってしまうので、「OFF」に変更しよう。

There is no security.output_filter defined in your application config file

いつも通り適当にFuelPHPをセットアップ。

画面を表示してみたら

「There is no security.output_filter defined in your application config file」

ってエラーが出た。

なんだこれ?ってググった。

ディレクトリのパーミッションがおかしかったら出るって書いてあった。

確認したけどおかしくないし。

次。SELinuxが有効だと出るから無効になってると出るとのこと。

そんなサーバーの設定いじる権限ないしー。

次。config.phpのoutput_filterがコメントアウトされていないか確認しろとのこと。エラーのそのまんまのことだね。

コメントアウトされてなかった。

つうか他の動いてるのと比べてみようとconfig.phpをdiffった。

…差分発見。パースエラー。。

直した。エラーは出なくなり、普通に画面が表示された。。。

XREAでFuelPHPを使ったメモ

XREAFuelPHPを試してみた。

Oilでのインストールはできるかどうかの確認はしなかった。

FuelPHPをZIPでもらってきてFTPのルートの下にディレクトリ作って設置。

cache・config・logs・tmpのパーミッション変更。

config.phpを最低限修正。(language=ja・default_timezone=Asia/Tokyo)

今回は独自ドメインの下にディレクトリ作って設置するので /public_html/ドメイン/新しいディレクトリにFuelPHPのpublicの中身をぶちこむ。

.htaccessの上の方の「Options +FollowSymLinks -Indexes」でエラーがでるのでコメントアウト

index.phpのAPPPATH・PKGPATH・COREPATHのパスを修正。

ブラウザで「ドメイン/新しいディレクトリ」で表示された。

Twig使いたかった。

config.phpのalways_loadとpackagesを開放してparserを追加。

composer.jsonのrequireにtwig足す。

"twig/twig":"1.*"

(上の行にカンマつける)

あれ?composerってコマンドラインつかわなきゃだめじゃん。

XREAのコンパネのサイト設定→ツール/セキュリティ→SSH接続IP許可。

使えるようになるまで10分くらいかかった。

SSHで接続。

composer.pharのところまで移動。

php composer.phar update

はげしくエラー出た。

ググった。

/usr/local/bin/php71cli composer.phar update

うまく動いた。Twig使えるようになった。よかった。

もしかしてFTP使わなくてもOilでインストールできたのかな。まあいいか。

MySQLで作成日と更新日の新しい方を使ってソートしたい

MySQLの作成日と更新日で新しい方を先に出したいときってあるじゃないですか。 そんなときはGREATEST。

SELECT * FROM `table` ORDER BY GREATEST(`created_at`, `updated_at`) DESC

+---------------------+---------------------+
| created_at          | updated_at          |
+---------------------+---------------------+
| 2018-08-21 19:22:55 | 2018-08-27 16:10:54 |
| 2018-08-27 12:06:44 | 2018-08-27 12:22:47 |
| 2018-08-20 17:24:34 | 2018-08-26 19:23:22 |
| 2018-08-21 15:52:43 | 2018-08-21 16:38:08 |
| 2018-08-26 13:08:17 | NULL                |
+---------------------+---------------------+

でも更新日のカラムってNULLってこともあるじゃないですか。そういう時は作成日を使いたいですよね。 なので修正。

SELECT * FROM `table` ORDER BY GREATEST(`created_at`, IFNULL(`updated_at`, `created_at`)) DESC

+---------------------+---------------------+
| created_at          | updated_at          |
+---------------------+---------------------+
| 2018-08-21 19:22:55 | 2018-08-27 16:10:54 |
| 2018-08-27 12:06:44 | 2018-08-27 12:22:47 |
| 2018-08-20 17:24:34 | 2018-08-26 19:23:22 |
| 2018-08-26 13:08:17 | NULL                |
| 2018-08-21 15:52:43 | 2018-08-21 16:38:08 |
+---------------------+---------------------+

いいかんじ。