为什么PHP无法打开流,使用w + fopen模式拒绝了权限?

问题描述 投票:0回答:1

我在Windows 10上。我使用的是laragon dev环境,该环境包装了Apache。

我正在尝试运行以下耗时调用来下载文件:

 $downloadClient = new Client(['base_uri' => 'https://vendor/region']);
 $downloadResponse = $downloadClient->request('GET','endpoint/file_url.txt',['sink' => __DIR__]);

我不断得到以下回报:

致命错误:未捕获RuntimeException:无法使用w +模式打开C:\ laragon \ www \ act:fopen(C:\ laragon \ www \ act):无法打开流:C:\ laragon \ www \中的权限被拒绝act \ vendor \ guzzlehttp \ psr7 \ src \ functions.php:303堆栈跟踪:#0 [内部函数]:GuzzleHttp \ Psr7 {closure}(2,'fopen(C:\ larago ...','C:\ laragon \ www \ ...',311,数组)#1 C:\ laragon \ www \ act \ vendor \ guzzlehttp \ psr7 \ src \ functions.php(311):fopen('C:\ laragon \ www \。 ..','w +')#2 C:\ laragon \ www \ act \ vendor \ guzzlehttp \ psr7 \ src \ LazyOpenStream.php(37):GuzzleHttp \ Psr7 \ try_fopen('C:\ laragon \ www \ .. 。','w +')#3 C:\ laragon \ www \ act \ vendor \ guzzlehttp \ psr7 \ src \ StreamDecoratorTrait.php(31):GuzzleHttp \ Psr7 \ LazyOpenStream-> createStream()#4 C:\ laragon \ www \ act \ vendor \ guzzlehttp \ psr7 \ src \ StreamDecoratorTrait.php(136):GuzzleHttp \ Psr7 \ LazyOpenStream-> __ get('stream')#5 C:\ laragon \ www \ act \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory.php(395):GuzzleHttp \ Psr7 \ LazyOpenStream-> write('在C:\ laragon \ www \ act \ vendor \ guzzlehttp \ psr7 \ src中\ functions.php,第303行

我已经尝试向我的用户帐户授予“完全控制”权限,这就是Laragon的运行方式。我还尝试将所有结果授予IUSR和目录中的“所有用户”,并显示现在的结果。

感谢您的帮助。

php fopen guzzle laragon
1个回答
0
投票

您将__DIR__传递为"sink"写入文件的位置。那是目录。您不能像将文件一样将数据写入目录。尝试使用文件名。

$downloadClient = new Client(['base_uri' => 'https://vendor/region']);
$downloadResponse = $downloadClient->request('GET','endpoint/file_url.txt',
      ['sink' => "file_url.txt"]);
© www.soinside.com 2019 - 2024. All rights reserved.