Muat naik fail PHP SMB menyebabkan 500 Ralat Pelayan Dalaman
<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>