PHP SMB ファイルのアップロードにより 500 内部サーバー エラーが発生する
P粉113938880
P粉113938880 2023-08-30 13:53:12
0
1
690
<p>ローカル フォルダー上のファイルを SMB 経由で FTP サーバーにアップロードしようとすると、ファイルはアップロードされますが、サーバーは次のメッセージとともに 500 内部サーバー エラーを返します。 </p> <ブロック引用> <p>警告: fopen(File.xls): ストリームを開けません: そのようなファイルまたはディレクトリはありません</p> </blockquote> <p>これは私のアップロード機能です: </p> <pre class="brush:php;toolbar:false;">パブリック関数アップロード($fileToUpload, $targetPath = "") { if (!empty($targetPath)) { if (substr($targetPath, -1, 1) != '/') { $targetPath .= "/"; } } $fileName = ベース名($fileToUpload); $this->srvShare->put($fileToUpload, $targetPath . $fileName); }</pre> <p>この場合、<strong>$fileToUpload</strong> は「File.xls」のようなものです。 関数にパス全体を渡そうとしましたが、それでも同じエラーが発生します。 アップロードは成功しました...ファイルはすでにサーバー上にありますが、それでも 500 Internal Server Error が発生するためコードを続行できません。 </p> <p>これは smb NativeShare の put() 関数です。</p> <pre class="brush:php;toolbar:false;">/*** ローカルファイルをアップロードする * * @param string $source ローカル ファイル * @param string $target ターゲット ファイル * @return bool * * @throws \Icewind\SMB\Exception\NotFoundException * @throws \Icewind\SMB\Exception\InvalidTypeException*/ パブリック関数 put($source, $target) { $sourceHandle = fopen($source, 'rb'); $targetUrl = $this->buildUrl($target); $targetHandle = $this->getState()->create($targetUrl); while ($data = fread($sourceHandle, NativeReadStream::CHUNK_SIZE)) { $this->getState()->write($targetHandle, $data, $targetUrl); } $this->getState()->close($targetHandle, $targetUrl); true を返します。 }</pre></p>
P粉113938880
P粉113938880

全員に返信(1)
P粉882357979

わかりました。エラーは正常に修正されました。 問題は、このアップロード関数を他の場所で使用したことがあり、同じパラメータで再度使用できると想定していることです。パラメータを 1 つ変更する必要がありますが、機能するようになりました :)

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート