-1

我有一个脚本,我们称之为“主”php 脚本,还有另一个脚本,称之为“writer”。我有一个 xml 文件。我的“作家”从 db 获取信息并将其写入 xml。如果我直接执行我的作家,一切都很好。

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

我怎么解决这个问题?

谢谢。

主要代码:

<?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';

}

?> 

这就是所有人,我认为没什么特别的。但是嗯为什么它不重写,我不知道。

4

1 回答 1

2

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

更好的选择是建立一个所有路径都相对于 like 的公共位置$_SERVER["DOCUMENT_ROOT"]

所以而不是

./myxml.xml

你会说

$_SERVER["DOCUMENT_ROOT"]."/path/to/my/myxml.xml"

如果这变得太乏味,您可以在一个常见的包含中定义几个已知位置。

define("XML_PATH", $_SERVER["DOCUMENT_ROOT"]."/path/to/my");

然后将其用作

XML_SAVE_PATH."/myxml.xml"
于 2013-05-23T21:34:56.240 回答