J'ai un fichier appelé generator.php
qui utilise fwrite()
pour créer un result.php
sur le serveur (Apache, PHP4). L'une des lignes result.php
est une instruction PHP include()
.PHP4 problèmes avec include() dans un fichier créé par fwrite()
Ainsi, generator.php
:
if (!is_file($fname)){
$resultfile = fopen($current_path . "/" . $fname, "w+");
}
fwrite($resultfile, '<?php include($_SERVER["DOCUMENT_ROOT"] . "'. '/inc/footer.php"); ?>' . "\n");
fclose($resultfile);
chmod($current_path . "/" . $fname, 0755);
Et result.php
:
<h2>Sponsored Links</h2>
<!-- begin sidebar_top ad -->
<?php echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php"); ?>
<!-- end sidebar_top ad -->
Mais cette déclaration include()
ne fonctionne pas lorsque je visite result.php
dans un navigateur. La déclaration d'écho fait, donc je sais que le chemin est correct.
Un autre test.php
avec le même code, que j'ai téléchargé en utilisant FTP dans le même dossier, fonctionne bien.
Le code dans le même dans les deux fichiers, lorsqu'il est récupéré via FTP.
En test.php
: (travaux, échos et comprend correctement.)
<?php
echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php");
?>
Toute idée pourquoi le include()
travaille dans test.php
(créé manuellement) et non dans result.php
(créé à l'aide fwrite()
), lorsque les deux sont en le même dossier?
Les seules différences que je connais entre les fichiers:
- propriétaire pourrait être différent (ne serait pas
result.php
être créé par l'utilisateurnobody
?) - Les autorisations sont à l'origine différentes. FTP'd fichier (de travail) est
0775
, tandis que ceux créés en utilisant fwrite() (include ne fonctionne pas) avait664
, et est chmodé par legenerator.php
à0775
. - Le fichier de travail
test.php
a été édité sur un Mac avec Smultron et téléchargé via FTP, alors que leresult.php
a été créé parfwrite()
sous Linux, appelé depuis un navigateur.
Avez-vous essayé de télécharger result.php avec un navigateur FTP et de vérifier manuellement qu'ils sont identiques? En outre, obtenez-vous des erreurs lorsque vous visitez result.php (soit sur la page ou dans le journal)? –
J'ai effectivement coupé 2 lignes du code du résultat.php (en passant par FTP) et créé test.php .. Aussi, si je remplace 'include' par 'require' alors il s'arrête juste à cette phrase. – Pranab
Le fichier est-il fermé avant d'être exécuté? Aussi, pouvons-nous voir les deux fichiers générés? – wallyk