Le téléchargement du fichier PHP SMB provoque une erreur de serveur interne 500
P粉113938880
2023-08-30 13:53:12
<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>
Ok... j'ai donc réussi à corriger l'erreur. Le problème est que j'ai utilisé cette fonction de téléchargement ailleurs et je suppose que je peux l'utiliser à nouveau avec les mêmes paramètres. Je dois modifier un paramètre et maintenant cela fonctionne :)