「NASサーバ_A」の「フォルダ」を > 同一ネットワーク上にある > 別の「NASサーバ_B」に毎日自動で「新規フォルダ」を作成し、そこにバックアップを作成するVBSを作成したが、手動で「タスクスケジューラ」を実行すると成功するが、自動で実行させると失敗する 失敗する原因が2つありました

VBSスクリプトを作成し > Win11の「タスクスケジューラ」を登録した。

テストで、手動で「タスクスケジューラ」を実行すると成功するが、自動で実行させると失敗する

おかしいな〜 Googleで検索していると以下の記事を見つけた。

参考にしたサイト:

https://ezrobot.biz/knowledge/faq-category/%e3%82%b9%e3%82%b1%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e5%ae%9f%e8%a1%8c

>タスクスケジューラー上で「ユーザがログオンしているかどうかに関わらず実行する」を選択するとデスクトップ上での操作を行うアプリは動かないようなっています。これはタスクスケジューラーの仕様です。

なるほど〜

タスクスケジューラーの全般で
「ユーザがログオンしているかどうかに関わらず実行する」
を選択

と設定したら > 自動でタスクが実行された

が、、

なぜか? 「上手く実行される」時と、「ダメ」な時」がある・・・

ようやく気が付きました!

バックアップ先のNAS_Bの設定で > 「省電力モード切替時間」が > 30分になっていた!!

解決方法:

 「省電力モード切替時間」を > 「なし」 にしたら問題無く実行されるようになりました。

以上

XServerの Cron を利用してPHPスクリプトを実行したが正常に実行されない

事象:

XServerの Cron を利用してPHPスクリプトを実行したが正常に実行されない

調査と解決方法:

1.「XServer」で使用している現在の「PHP」バージョンを事前に確認する

・XServerの「コントロールパネル」に > ログイン
・「全メニュー表示」 > 「PHP Ver. 切替」

2.該当する「対象ドメイン」と「現在のバージョン」のPHPを確認する

以下の例だと > PHP8.2.28 > この場合は > PHP8.2 となる

3.「全メニュー表示」 > 「Cron設定」 > 「+Cron設定を追加」

4.Cronで実行させるPHPのコマンドパスとスクリプトを登録する

参考URL:https://www.xserver.ne.jp/manual/man_program_cron.php

ファイルマネージャーで > スクリプトのパーミッションを「701」にしておくと書いてあるので > ファイルマネージャーで設定した

■登録したコマンド

/usr/bin/php8.2 /home/(ここにXServerID)/(ここにドメイン名)/public_html/cron.php

#PHP8.2 と /home/ の間は > 半角スペースが入ります!

■エラーと解決方法

エラー:相対でパスを指定していた箇所
 require_once(‘../header.php’);

正常:フルパスで指定
 require_once(‘/home/(ここにXServerID)/(ここにドメイン名)/public_html/header.php’);

エラー:if文で$_SERVER[‘SERVER_NAME’]を使っていた
 if($_SERVER[‘SERVER_NAME’] ==’xsXXXXX’)

正常:代わりに、if文で gethostname()  を使った
 f(gethostname() ==’sv XXXXX.xserver.jp’)

Cron結果の通知アドレス を登録しておくとCronエラーがメールで届くので、デバッグに便利。

#最初に登録したメールアドレスでは、フィルタリングされたのか > 通知メールが不達になったので > gmailに変更したら届きました。

以上