2017-08-13 2 views
0

Tous,en utilisant un script PHP pour enregistrer un fichier image dans localhost - ne fonctionnera pas

J'ai suivi le lien ci-dessous pour travailler PHP sur mon MacBook Pro (OS 10.12.6). J'obtiens même le phpinfo apparaître quand j'utilise http://localhost/~USERNAME/phpinfo.php. ~ USERNAME est remplacé par mon vrai nom d'utilisateur.

Toutefois, lorsque je crée un nouveau projet dans WebStorm (2016.3.1) et que j'utilise le code HTML et PHP ci-dessous ... Je rencontre des problèmes. Mon but est d'avoir un bouton de saisie de téléchargement afin qu'un utilisateur puisse télécharger une image dans mon dossier de transit localhost. Cependant, lors de l'exécution de mon index.html dans WebStorm, le fichier upload.php est téléchargé dans mes dossiers de téléchargement. Et mon fichier choisi dans l'élément d'entrée ne le fait jamais dans le dossier intermédiaire.

FYI, j'ai modifié mon php.ini local pour inclure les entrées ci-dessous. J'ai ensuite redémarré apache2 (via sudo apachectl restart).

Est-ce que vous pourriez savoir ce que je fais? Merci pour toute aide.

LINK à PHP d'installation sur MAC

https://ole.michelsen.dk/blog/setup-local-web-server-apache-php- osx-yosemite.html

HTML 
<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

PHP

<?php 

    $uploaddir = 'staging/'; 
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile); 

?> 

    PHP.INI 

    file_uploads = on 
    post_max_size = 40M 
    upload_max_filesize = 40M 
    post_max_size = 40M 
    max_execution_time : 6000 
    max_input_time : 6000 
    memory_limit : 128M 
+0

Vous avez probablement le rapport d'erreurs de PHP désactivé. Même ainsi, vous auriez probablement trouvé la réponse que @RiggsFolly vous a donné si vous avez consulté le journal des erreurs Apaches (la prochaine fois!) :) –

+0

Avez-vous une suggestion à regarder les journaux. J'ai regardé dans/var/log/apache2 et renommé le error_log et le access_log. Cependant, un nouveau fichier error_log n'a pas été créé après avoir essayé d'exécuter mon site. –

+0

Ajoutez ces deux lignes au premier fichier PHP que votre projet appelle (index.php, etc). Il n'a pas besoin d'être présent dans chaque fichier, juste appelé une seule fois avant que le reste de votre code ne s'exécute: 'ini_set ('display_errors', 1); error_reporting (E_ALL); 'cela mettra juste les erreurs sur votre écran qui est encore plus facile pour vos besoins. –

Répondre

0

L'attribut name dans l'entrée doit correspondre au nom utilisé dans le PHP script

<input type="file" name="fileToUpload" id="fileToUpload"> 
        ^^^^^^^^^^^^^^^^^^^ 

donc modifiant le script PHP comme celui-ci

<?php 

    $uploaddir = 'staging/'; 
    $uploadfile = $uploaddir . basename($_FILES['fileToUpload']['name']); 
    //           ^^^^^^^^^^^^ 
    move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile); 
    //       ^^^^^^^^^^^^ 

?> 
+0

RiggsFolly, j'ai copié le code que vous avez suggéré mot pour mot. Mais mon problème se produit toujours. Je vais regarder comment regarder les codes d'erreur .... comme le mentionne Lucas Krupinski. –