CI 묻고 답하기

제목 웹애플리케이션에서 CLI 명령을 실행하는데 클래스를 못찾는 오류가 납니다.
카테고리 CI 4 관련
글쓴이 엘제이 작성시각 2024/08/16 19:11:45
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 1142   RSS

CLI 환경에서 작업 하려고 하는데 

아래와 같이 BaseCommand 클래스를 못찾는다고 나오네요 ㅠㅠ

System 디렉토리에 들어가보면 분명히 존재하는데 왜 그런지 모르겠습니다.

Commands 디렉토리와 ExcelCommand.php 파일은 755 권한을 주었습니다.

실행하는 파일에서 exec(...., $output, $returnVal); 시 $returnVal 은 255 가 출력됨니다.

$output 은 출력이 없고요 ㅠㅠ

Stack trace:

#0 {main}

  thrown in /var/www/html/app/Commands/ExcelCommand.php on line 10

PHP Fatal error:  Uncaught Error: Class 'CodeIgniter\CLI\BaseCommand' not found in /var/www/html/app/Commands/ExcelCommand.php:10

<?php

namespace App\Commands;

use CodeIgniter\CLI\BaseCommand;

use CodeIgniter\CLI\CLI;

use PhpOffice\PhpSpreadSheet\IOFactory;

use App\Libraires\ExcelLibrary;

use App\Models\ExcelModel;

class ExcelCommand extends BaseCommand {

    protected $groups       = 'Command';

    protected $name         = 'command:excel';

    protected $descrption   = 'sss';

 

    public function run(array $params)

    {

        $filePath       = $params[0];

        $entity         = $params[1];

        if(! file_exists($filePath)){

            CLI::error('error : file not exists');

        }

        try{

            $spreadsheet    = IOFactory::load($filePath);

            $ExcelData[]    = $spreadsheet->getActiveSheet()->toArray();

            // $excelLib    = new ExcelLibrary();

            // $excelLib->valid($ExcelData);

            // $model          = new ExcelModel();

            // $model->import($ExcelData, $entity);

   

        }catch(Execption $e){

            //$this->logger->info($e->getMessage());

            CLI::error('error : '.$e->getMessage());

        }

    }

}

 다음글 클라우드플레어와 로그인 이슈가 있을까요? (3)
 이전글 ciboard를 xampp로 설치하여 localhost... (3)

댓글

darkninja / 2024/08/17 12:59:04 / 추천 0

커맨드 라인을 통한 실행

http://ci4doc.cikorea.net/cli/cli.html

ci4/system/config/AutoloadConfig.php 에

    protected $corePsr4 = [
        'CodeIgniter' => SYSTEMPATH,
        'Config'      => APPPATH . 'Config',
    ];

가 정의 되어 있습니다.

codeigniter 의 기능을 사용하기 위해서는

ci4/public/index.php 를 통해 ci 가 정상적으로 로드되어야 합니다

$ cd /path/to/project/public
$ php index.php tools message

ci 의 도움말을 참고하세요!

namespace 와 autoloader 에 대한 정보가 부족한거 같으신데

ci4/public/index.php 에서 부터 system/autoloader/autoloader.php 에 이르는 흐름을 분석해보시기 바랍니다.

cilove / 2024/08/26 19:01:29 / 추천 0

exec(...

에서 ...내용이 궁금하네요

kaido / 2024/08/27 13:46:45 / 추천 0

CI4 CLI 에서 커멘드로 실행하기

php  /var/www/app/appstarter/public/index.php cron scheduler_static

 

동기식으로 cli pytthon 실행하기
exec("python3  /var/www/app/python_script/csv_export.py");


비동기식으로 cli php 실행하기
passthru("exec  php /var/www/app/appstarter/public/index.php cron put_group_info");

 

호출 방법은 이렇고 CLI 실행시 조심해야 할 포인트가 몇가지 있습니다.

CLI 에서는 세션과 HTTP 라이브러리가 에러가 납니다. 그래서 구분해서 로드해줘야합니다.

만일 BaseCommand 에서 세션을  기본적으로 사용한다면 에러 날 수 있습니다.

cilove / 2024/08/27 14:47:03 / 추천 0

@kaido

ci4는 php spark 커맨드명

이렇게 하는게 좋습니다.

참고: http://ci4doc.cikorea.net/cli/cli_commands.html