J'ai trouvé l'existence du module mod_allowmethod: <Location "/"> AllowMethods OPTIONS GET POST PUT DELETE </Location> <Directory /srv/tftp/foo> Require all granted Script PUT /srv/tftp/foo/file_upload.php </Directory>
Malgré l'activation du module et la config ci-dessus, j'ai toujours : $ curl -v -T foo.cfg http://192.168.1.1/foo/foo.cfg ... > PUT /foo/foo.cfgt HTTP/1.1 > User-Agent: curl/7.38.0 ... > < HTTP/1.1 100 Continue * We are completely uploaded and fine < HTTP/1.1 405 Method Not Allowed < Date: Mon, 26 Oct 2020 13:39:20 GMT * Server Apache/2.4.38 (Debian) is not blacklisted < Server: Apache/2.4.38 (Debian) < Allow: OPTIONS,HEAD,GET,POST < Content-Length: 296 < Content-Type: text/html; charset=iso-8859-1 < <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method PUT is not allowed for this URL.</p> ... J'observe que la méthode PUT : est bien envoyée n'est pas incluse dans le header Allow du message d'erreur reçu en retour. Une idée ? Le mer. 21 oct. 2020 à 20:15, Olivier <oza.4...@gmail.com> a écrit : > Bonjour, > > J'ai des fichiers dans une arboresence /srv/tftp/foo d'une machine sous > Buster > Je souhaite pouvoir "pousser" des fichiers dans cette arborescence avec la > méthode PUT via un serveur Apache 2.4 sur lequel le paquet php est installé. > > Comment procéder proprement ? > > J'ai le fichier file_upload.php au contenu suivant: > > <?php > //error_log("Current user is ".get_current_user()); > > $data = file_get_contents("php://input"); > $output_filename = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']; > > $code = file_put_contents($output_filename, $data); > if (strlen($data) !== $code) > error_log("Error code while writing ".$output_filename.": input length > is ".strlen($data)." while output length is ".$code); > > ?> > > > J'ai aussi un fichier de config Apache, activé avec a2enconf : > <VirtualHost *:80> > > ServerAdmin webmaster@localhost > > Alias /foo /srv/tftp/foo > DocumentRoot /srv/tftp/foo > ErrorLog ${APACHE_LOG_DIR}/error.log > CustomLog ${APACHE_LOG_DIR}/access.log combined > > <Directory /srv/tftp/foo/> > Options Indexes FollowSymLinks MultiViews > AllowOverride None > Require all granted > Script PUT /srv/tftp/foo/file_upload.php > </Directory> > > </VirtualHost> > > J'ai: > curl -T foo.cfg http://192.168.1.1/foo/foo.cfg > <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> > <html><head> > <title>405 Method Not Allowed</title> > </head><body> > <h1>Method Not Allowed</h1> > <p>The requested method PUT is not allowed for this URL.</p> > <hr> > <address>Apache/2.4.38 (Raspbian) Server at 192.168.1.1 Port 80</address> > </body></html> > > Comment corriger ? > > Slts >