【QNAP】コンソールからphpコマンドを実行する方法

悩む男性

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周りの知識が足りないなぁ…もっと勉強しなければ。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のSEを経て、独立。 ここ数年はWEB以外の仕事をしていたため、割と本気で勉強中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください