Muat naik fail PHP SMB menyebabkan 500 Ralat Pelayan Dalaman
P粉113938880
2023-08-30 13:53:12
<p>Apabila saya cuba memuat naik fail pada folder setempat ke pelayan FTP melalui SMB, fail tersebut akan dimuat naik, tetapi pelayan mengembalikan Ralat Pelayan Dalaman 500 dengan mesej berikut: </p>
<blockquote>
<p>Amaran: fopen(Fail.xls): tidak boleh membuka strim: Tiada fail atau direktori sedemikian</p>
</blockquote>
<p>Ini ialah fungsi muat naik saya: </p>
<pre class="brush:php;toolbar:false;">muat naik fungsi awam($fileToUpload, $targetPath = "") {
jika (!kosong ($targetPath)) {
if (substr($targetPath, -1, 1) != '/') {
$targetPath .= "/";
}
}
$fileName = basename($fileToUpload);
$this->srvShare->put($fileToUpload, $targetPath . $fileName);
}</pre>
<p>Dalam kes ini, <strong>$fileToUpload</strong> adalah sesuatu seperti 'File.xls'.
Saya telah cuba menghantar keseluruhan laluan ke fungsi tetapi ia masih menghasilkan ralat yang sama.
Muat naik berjaya... fail sudah ada pada pelayan, tetapi kod tidak boleh diteruskan kerana ia masih mengakibatkan Ralat Pelayan Dalaman 500. </p>
<p>Ini ialah fungsi put() dalam smb NativeShare: </p>
<pre class="brush:php;toolbar:false;">/*** Muat naik fail tempatan
*
* @param string $sumber fail tempatan
* @param string $target fail sasaran
* @kembali bool
*
* @melempar IcewindSMBExceptionNotFoundException
* @melempar IcewindSMBExceptionInvalidTypeException*/
letak fungsi awam($sumber, $sasaran) {
$sourceHandle = fopen($source, 'rb');
$targetUrl = $this->buildUrl($target);
$targetHandle = $this->getState()->create($targetUrl);
manakala ($data = fread($sourceHandle, NativeReadStream::CHUNK_SIZE)) {
$this->getState()->write($targetHandle, $data, $targetUrl);
}
$this->getState()->close($targetHandle, $targetUrl);
kembali benar;
}</pre></p>
Ok..jadi saya berjaya membetulkan ralat. Masalahnya ialah saya telah menggunakan fungsi muat naik ini di tempat lain dan saya mengandaikan saya boleh menggunakannya semula dengan parameter yang sama.. Saya perlu menukar satu parameter dan kini ia berfungsi :)