PHP从包含的脚本文件写入文件

PHP从包含的脚本文件写入文件,php,include,fwrite,Php,Include,Fwrite,我有一个脚本,我们称之为“main”php脚本,还有一个脚本,称之为“writer”。我有一个xml文件。我的“编写者”从数据库中获取用户的信息并将其写入xml。如果我直接执行我的作者,所有工作都很好 现在我想从我的“主”脚本中执行“writer”。问题是,我可以在main中看到writer文件的输出(为了测试目的,我添加了一些echo),但它不像直接执行xml文件那样重写xml文件 我怎样才能解决这个问题 谢谢 来自main的代码: <?php session_start(); inc

我有一个脚本,我们称之为“main”php脚本,还有一个脚本,称之为“writer”。我有一个xml文件。我的“编写者”从数据库中获取用户的信息并将其写入xml。如果我直接执行我的作者,所有工作都很好

现在我想从我的“主”脚本中执行“writer”。问题是,我可以在main中看到writer文件的输出(为了测试目的,我添加了一些echo),但它不像直接执行xml文件那样重写xml文件

我怎样才能解决这个问题

谢谢

来自main的代码:

<?php 
session_start();
include_once("./../writer.php");


    $_SESSION['make_sitemap'] = true;

    echo 'ok';

?>

来自编写器的代码:

<?php
session_start();
// include some utility files and header, also connection to db    

if($_SESSION['make_sitemap']){ 

$xml = '<?xml version="1.0" encoding="UTF-8"?>';

// some boring stuff with xml variable 


$fp = fopen('./myxml.xml', 'w');

fwrite($fp, $xml, strlen($xml));

fclose($fp);

echo 'done';

}

?> 


我想,这些都是人,没什么特别的。但是,嗯,我不知道它为什么不重写。

php中的相对路径是根据执行它们的位置来解析的,这意味着php最初运行请求时使用的文件的位置。这意味着当您直接点击
writer.php
时,意味着
/myxml.xml
将出现在writer.php与main.php所在的同一目录中

一个更好的选择是建立一个公共位置,所有路径都与类似的
$\u服务器[“DOCUMENT\u ROOT”]
相关

所以不是

./myxml.xml
你会说

$_SERVER["DOCUMENT_ROOT"]."/path/to/my/myxml.xml"
如果这变得太单调乏味,您可以在一个公共include中定义几个已知位置,如

define("XML_PATH", $_SERVER["DOCUMENT_ROOT"]."/path/to/my");
然后用它作为

XML_SAVE_PATH."/myxml.xml"

正如其他人评论的那样,发布的
code
总是一首给定的歌。有些代码会很好,否则我无法同时阅读你的问题和图片好吧,好吧,你想要它,你得到了:)^----让我想起了一首
~AC-DC~
歌。@Fred heh,我刚从GTA San Andreas枪械店记住它:),我也添加了代码,你完全正确,下次我会考虑的。谢谢你和所有试图帮助我的人!