Das Hochladen einer PHP-SMB-Datei verursacht 500 Internal Server Error
<p>Wenn ich versuche, eine Datei in einem lokalen Ordner über SMB auf einen FTP-Server hochzuladen, wird die Datei hochgeladen, aber der Server gibt einen 500 Internal Server Error mit der folgenden Meldung zurück: </p>
<blockquote>
<p>Warnung: fopen(File.xls): Stream kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis</p>
</blockquote>
<p>Das ist meine Upload-Funktion: </p>
<pre class="brush:php;toolbar:false;">public function upload($fileToUpload, $targetPath = "") {
if (!empty($targetPath)) {
if (substr($targetPath, -1, 1) != '/') {
$targetPath .= "/";
}
}
$fileName = Basisname($fileToUpload);
$this->srvShare->put($fileToUpload, $targetPath . $fileName);
}</pre>
<p>In diesem Fall ist <strong>$fileToUpload</strong> so etwas wie „File.xls“.
Ich habe versucht, den gesamten Pfad an die Funktion zu übergeben, aber es kommt immer noch zu demselben Fehler.
Der Upload ist erfolgreich ... die Datei befindet sich bereits auf dem Server, aber der Code kann nicht fortgesetzt werden, da dies immer noch zu einem 500 Internal Server Error führt. </p>
<p>Dies ist die put()-Funktion in smb NativeShare: </p>
<pre class="brush:php;toolbar:false;">/*** Laden Sie lokale Dateien hoch
*
* @param string $source lokale Datei
* @param string $target Zieldatei
* @return bool
*
* @throws IcewindSMBExceptionNotFoundException
* @throws IcewindSMBExceptionInvalidTypeException*/
öffentliche Funktion 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);
return true;
}</pre></p>