Question

Je suis coincé et dans le besoin d'une main. L'espoir que quelqu'un peut aider?

Quelqu'un a une idée pourquoi je reçois « écriture a échoué » dans ce code?

$write_file = "/usr/home/public_html/php/users_v2.sql";
$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");

if (is_writeable($write_file)) {
    if ($write_handle === FALSE) echo 'Failed handle?!';
    if (fwrite($write_handle, "Hi\n") === FALSE) echo "Failed write!\n";
}

fclose($write_handle);

Merci d'avance.

Était-ce utile?

La solution

En utilisant l'opérateur OR lors de la création de votre poignée de fichiers, vous retournez une valeur booléenne en fonction de l'opération. Donc $ write_handle contiendra vrai ou faux, au lieu de la ressource de fichier. Une meilleure façon d'ouvrir un fichier pour l'écriture et tester qu'il a réussi serait ceci:

$write_handle = fopen($write_file, 'w');
if ($write_handle === false)
{
    die('Could not open file ' . $write_file);
}

En outre, vous pouvez utiliser la fonction file_put_contents () qui gère les fopen (), fwrite () et fclose () pour vous. Je recommande que si vous exécutez une seule écriture sur le même fichier, car il sera beaucoup de frais généraux, et à moins que vous passez le drapeau FILE_APPEND, il videra le fichier pour chaque écriture.

Autres conseils

Je l'ai vu utilisé partout, mais le problème est le || die ( "users_v2 ouvert Couln't!");

D'abord, j'ajouté:

error_reporting(E_ALL);

pour voir ce que php est signale des erreurs.

$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");
fclose($write_handle);

Renvoie une erreur gestionnaire de flux non valide et poignée fichier de 1. Sans lui le descripteur de fichier renvoyé est « Resource id # x ».

Modification de la ligne à:

$write_handle = fopen($write_file, "w"); // || die("Couln't open users_v2!");

et votre code fonctionne très bien. Va aller sur ce poster php.net maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top