La lecture d'un fichier .dat comme « rb » lecture binaire
Question
J'ai un \folder\
dossier au-dessus du Webroot qui contient .php
, .inc
, fichiers .dat
-
le
.php
peut accéder au.inc
aucun problème -
mais quand le
.inc
tente d'accéder au.dat
en utilisantfopen('mydat.dat', "rb");
donne une erreur qu'il ne peut pas trouvermydat.dat
dans\folder\myinc.inc
Bien sûr, il ne peut pas trouver depuis .inc
est un fichier pas un dossier. Pourquoi php comme tel traite?
Toutes les idées pourquoi php essaie de trouver le .dat
dans le .inc
?
ou toute autre alternative à fopen($filename, "rb")
?
La solution
Après avoir lu vos commentaires, je pense que vous attendez d'utiliser fopen include_path.
fopen () n'utilise pas le include_path par défaut (contrairement à inclure). Il est une option. Consultez le manuel. http://www.php.net/manual/en/function.fopen. php
Autres conseils
En savoir bases du système de fichiers. votre répertoire de travail est encore dans le Webroot. il ne marche pas changer dans le dossier \ \ (bien qu'il semble nouvelles versions de PHP ne regardez les fichiers dans l'emplacement du fichier en cours).
Quoi qu'il en soit, si vous voulez ouvrir un fichier dans le même répertoire, dirname(__FILE__)
est toujours pour vous
dans le myinc.inc vous pouvez utiliser
fopen(dirname(__FILE__).'/mydat.dat', "rb");
On dirait que vous avez safe_mode
activé, mais n'ont pas de valeur pour open_basedir
, ou avoir le fichier à l'extérieur. Placez le fichier .dat dans un chemin donné à cette option.
Chaque fois que nous traitons avec des fichiers en php. Il est nécessaire de donner chemin + nom de fichier pour éviter ce type d'erreurs.