Получение ошибки «sh: 1: -n: not found» при развертывании приложения Laravel на сервере Nginx (Droplet) - PullRequest
0 голосов
/ 15 марта 2019

Я застрял.Я получаю эту неясную ошибку при развертывании моего приложения Laravel 5.5 на сервере Digital Ocean Nginx / Ubuntu:

sh: 1: -n: not found

Мое приложение отлично работает на моем локальном сервере Xampp.Эта ошибка появляется, когда PHPjasper выдает исключение при выполнении отчета.Я трижды проверил все параметры и разрешения, связанные с этим.Все необходимые файлы расположены там, где они должны быть.Я не уверен, с чего начать поиск, поэтому любой ввод или интерпретация этой ошибки были бы полезны.

FWIW, это код, который запускается и выдает ошибку:

$ext = "pdf";

//Jasper options from ENV

$jdriver = env("JASPER_DB_DRIVER");
$jusername = env("JASPER_DB_USERNAME");
$jpassword = env("JASPER_DB_PASSWORD");
$jhost = env("JASPER_DB_HOST");
$jdatabase = env("JASPER_DB_DATABASE");
$jport = env("JASPER_DB_PORT");


$username = Auth::user()->name;
$output = public_path().'/storage/reports/'.$id.'/'.$username.$id.'_'.$filename; 
$filepath = storage_path().'/reports';
$input = storage_path().'/reports/'.$filename.'.jasper';
$outputfile = storage_path().'/reports/'.$filename.$id.'.'.$ext;
$options = [ 
    'format' => [$ext],
    'locale' => 'en',
    'params' => ['user_id' => $id,
                'user_name'=> $username],
    'db_connection' => [
        'driver' => $jdriver, 
        'username' => $jusername,
        'password' => $jpassword,
        'host' => $jhost,
        'database' => $jdatabase,
        'port' => $jport

    ] 
];

$jasper = new PHPJasper;

$jasper->process( 
    $input, 
    $output, 
    $options
    )->execute();

Все это прекрасно работает с последней командой «execute», а затем бомбами при выполнении PHPjasper.

Код в PHPjasper.php, который выдает исключение:

/**
 * @param bool $user
 * @return mixed
 * @throws Exception\InvalidCommandExecutable
 * @throws Exception\InvalidResourceDirectory
 * @throws Exception\ErrorCommandExecutable
 */
public function execute($user = false)
{
    $this->validateExecute();
    $this->addUserToCommand($user);

$output = [];
$returnVar = 0;

chdir($this->pathExecutable);
exec($this->command, $output, $returnVar);
if ($returnVar !== 0) {
    //throw new \PHPJasper\Exception\ErrorCommandExecutable();
    throw new \Exception("{$output[0]}", 1);
}

return $output;
}

Это выглядиткак ошибка Linux, так что если кто-нибудь может порекомендовать способ отладки и выяснить, в чем проблема, я был бы очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...