コマンドラインが正常に動作しているときにcronジョブエラーが発生する

コマンドラインが正常に動作しているときにcronジョブエラーが発生する

httpdocs/pub/ftp-admin/ ディレクトリから .sh bash ファイルを実行します。ディレクトリのコマンドラインでは、すべてがうまく機能します。 pleskでcronジョブを実行すると、すべてのmagento 2コマンドは機能せず、このメッセージが表示されます。

MagentoはPHP 7.1.3以降をサポートしています。

以下のスクリプトを参照してください。何が問題だ。実行中:CentOS Linux 7.8.2003およびPHP 7.2.31

#!/usr/bin/env bash

file=*.ZIP
  if [ -f $file ]
    then
      echo $file "exist"
    # 
        cp $file ./backup
    # 
    unzip -P web $file
    # 
    rm -f $file
   fi
    # 
   if [ -f *BASIC.XML ]
    then
    mv *_BASIC.XML BASIC.XML
    php -f ../../bin/magento import:job:run 1
   fi
    # 
   if [ -f *PRICES.XML ]
        then
        mv *_PRICES.XML PRICES.XML
        php -f ../../bin/magento import:job:run 4
    php -f ../../bin/magento import:job:run 2 
   fi
    # 
   if [ -f *STOCKINFO.XML ]
        then
        mv *_STOCKINFO.XML STOCKINFO.XML
        php -f ../../bin/magento import:job:run 3
   fi
    # 
    cp -f *.XML ./backup
    # 
    rm -f *.XML

答え1

crontabでスクリプトを使用するたびに、PATHそれに応じてコマンド変数を設定する必要があります(ここ)。/path/to/the/bin/magento

前任者:PATH=$PATH:/path/to/the/bin/magento

スクリプトで../スクリプトが実行されるディレクトリとスクリプトで使用する場合は、必ずフルパスを使用してください。./cd/path/to/the/bin/magento

答え2

問題が解決しました。 pleskのCronジョブは低PHPバージョンで実行され、次にSSHを介して実行されます。次のようにスクリプトを編集すると問題が解決しました。

/opt/plesk/php/7.2/bin/php -f $MAGEPATH/magento import:job:run 1

関連情報