QNAP NASに、SSHでログインし、コンソールからphp
コマンドを実行してみると、
[~] # php -v
-sh: php: command not found
見つからない…。
Webサーバ(LAMP)は標準で対応しているので、使えないってことはないはず。
パスが通ってないだけかな?
…と思ってからが、結構長かったので一部始終メモ。
まずはphpを探す
とりあえず、php様がどこにいらっしゃるか調べてみた。
[~] # find / -name php
:
/mnt/ext/opt/apache/bin/php
Container Stationで、仮想環境立てていたので大量にヒットしたが、ここっぽい。
ディレクトリ移動して、もう一度php
コマンドを実行してみた。
[/mnt/ext/opt/apache/bin] # php -v
-sh: php: command not found
ん?
確かにここにいるんだけどな…
その後、export
してパス通したり、なんやかんやしたけど、結局上手くいかず…。
結局、よく分からない解決
とりあえず、以下のコマンドで実行できた。
[/mnt/ext/opt/apache/bin] # /mnt/ext/opt/apache/bin/php -v
PHP 5.6.33 (cli) (built: May 28 2018 04:51:22)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
え?なんで?
でもまぁ、動いたのでこれで行くことにした。
ついでに
実行するphpファイルの中でDateTimeクラスを使ってたら、以下のようなエラーが。
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.'
QNAPの管理画面を確認し、php.iniの設定を見ても、ちゃんとdate.timezoneは設定されている。
これも原因はよく分からないが、言われる通りソースコード側にdate_default_timezone_set('Asia/Tokyo');
を追記したら、エラーが出なくなった。
Linux周りの知識が足りないなぁ…もっと勉強しなければ。
21/05/03追記:aliasコマンドを使う
とおりすがり様からコメント頂きました!
# alias php=’/usr/local/apache/bin/php’
これでいけそうとのこと。また試したら結果を書きます!
とおりすがりのものです。
alias php=’/usr/local/apache/bin/php’
でいけそうなのでメモ。(自分の為にも)
> とおりすがり 様
コメント有難うございます。
なるほど!aliasコマンドを使うのですね。