Le téléchargement du fichier PHP SMB provoque une erreur de serveur interne 500
<p>Lorsque j'essaie de télécharger un fichier sur un dossier local vers un serveur FTP via SMB, le fichier est téléchargé, mais le serveur renvoie une erreur de serveur interne 500 avec le message suivant : </p>
<blockquote>
<p>Avertissement : fopen(File.xls) : impossible d'ouvrir le flux : aucun fichier ou répertoire de ce type</p>
</blockquote>
<p>Voici ma fonction de téléchargement : </p>
<pre class="brush:php;toolbar:false;">public function upload ($fileToUpload, $targetPath = "") {
si (!empty($targetPath)) {
if (substr($targetPath, -1, 1) != '/') {
$targetPath .= "/";
}
}
$fileName = nom de base($fileToUpload);
$this->srvShare->put($fileToUpload, $targetPath . $fileName);
}</pré>
<p>Dans ce cas, <strong>$fileToUpload</strong> est quelque chose comme 'File.xls'.
J'ai essayé de transmettre le chemin complet vers la fonction mais cela entraîne toujours la même erreur.
Le téléchargement est réussi... le fichier est déjà sur le serveur, mais le code ne peut pas continuer car il entraîne toujours une erreur interne du serveur 500. </p>
<p>Il s'agit de la fonction put() dans smb NativeShare : </p>
<pre class="brush:php;toolbar:false;">/*** Téléchargez des fichiers locaux
*
* @param chaîne $source fichier local
* @param chaîne $fichier cible cible
* @return booléen
*
* @throws IcewindSMBExceptionNotFoundException
* @throws IcewindSMBExceptionInvalidTypeException*/
fonction publique put ($ source, $ cible) {
$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);
renvoie vrai ;
}</pre></p>