Php Symfony/进程权限被拒绝
我正在使用Symfony/Process在Laravel的web.php路径中从Laravel Dusk运行一个测试。这是我正在使用的代码:Php Symfony/进程权限被拒绝,php,laravel,symfony,symfony-process,symfony-4.3,Php,Laravel,Symfony,Symfony Process,Symfony 4.3,我正在使用Symfony/Process在Laravel的web.php路径中从Laravel Dusk运行一个测试。这是我正在使用的代码: Route::get('/scraping', function () { $process = new Process('cd pathtoartisan && C:\xampp\php\php.exe artisan dusk -v'); $process->setPTY(true); $process-
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文档中读到以下命令应该可以帮助我:
chmod-R 777变量/日志/
但我使用的是Windows,我不知道如何获取该命令,我也不知道该命令是否正确,或者我是否应该授予其他文件的权限。根据@zerkms的建议,尝试将临时目录更改为默认可写的Laravel存储
Route::get('/scraping',函数(){
putenv('TMPDIR='.storage_path());//setPTY(true);
$process->run();
如果(!$process->isSuccessful()){
抛出新的ProcessFailedException($process);
}
回显“”。$process->getOutput();
});
由于某种原因sys\u get\u temp\u dir
在您的机器上返回C:\WINDOWS`。检查操作系统设置,确保设置为可写的。还要检查
Process`constructor的第二个参数:您需要使用它而不是cd
。无法在linux上复制,一定是操作系统的问题
> $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)); }