Я использую Symfony / Process для запуска теста из Laravel Dusk по маршруту web.php в Laravel. Это код, который я использую:
Route::get('/scraping', function () {
$process = new Process('cd pathtoartisan && C:\xampp\php\php.exe artisan dusk -v');
$process->setPTY(true);
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
echo '<pre>'.$process->getOutput();
});
Думаю, все будет нормально, но у меня такая ошибка:
Symfony \ Component \ Process \ Exception \ RuntimeException: не удалось открыть временный файл для записи вывода процесса: fopen (C: \ WINDOWS \ sf_proc_00.out.lock): не удалось открыть поток: в разрешении отказано
в C: ... \ laravel-master \ vendor \ symfony \ process \ Pipes \ WindowsPipes.php: 60
> $file = sprintf('%s\\sf_proc_%02X.%s',$tmpDir, $i, $name);
> if (!$h = fopen($file.'.lock', 'w')) {
> restore_error_handler();
> throw new RuntimeException(sprintf('A temporary file could not be opened to write the process output: %s', $lastError)); }
Я прочитал в документации Symfony, что следующая команда должна мне помочь:
chmod -R 777 var / log /
Но я использую Windows, и я не знаю, как это получить, также я не знаю, правильная ли эта команда, или я должен дать разрешение на другой файл.
sys_get_temp_dir
на вашем компьютере возвращает конструкторC:\WINDOWS`. Check your OS settings an ensure it's set to something writeable. Also check the second argument of the
Process`: вам нужно использовать его вместоcd
. - person zerkms   schedule 03.09.2019