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が動いていない様子。
エラーメッセージでググると仲間を発見。ありがたい。
ファイルを設置してrequireすればよいとのこと。
私の環境ではrandom_compatは入っていたのでsodium_compatのみ真似する。
ファイルのダウンロード先が書いていなかったので適当にググる。
それっぽいところで最新の1.12.0のzipをダウンロード。
設置してrequireしたら動いた!よかった!
でもせっかくなのでcomposer使いたい。状態を元に戻してまたチャレンジ。
composer.jsonのrequireの配列の最後に以下を追加
"paragonie/sodium_compat": "1.*"
1.*にしたのは、さっきのサイトの履歴の雰囲気から判断。(ここってみんなどうやって決めてるの。。?)
アップデートを実施。
php composer.phar update --prefer-dist
さっきと同じ最新版がインストールされて、動作確認したらちゃんと動いた!よかった!
XREAでFuelPHPを使ったメモ2
前回記事
またXREAにFuelPHPをインストールしたくなったのでやった。
前回の反省を生かし、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を使ったメモ
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 | +---------------------+---------------------+
いいかんじ。