gpt4 book ai didi

php - 为什么 PHP 脚本无法通过命令行或任务调度程序在 Server 2008 上写入文件?

转载 作者:行者123 更新时间:2023-12-02 17:55:11 25 4
gpt4 key购买 nike

我在 serverfault.com 上创建了一个问题,建议我在这里提问。

https://serverfault.com/questions/140669/why-cant-php-script-write-a-file-on-server-2008-via-command-line-or-task-schedul

我有一个 PHP 脚本。当我使用浏览器时它运行良好。它在同一目录中写入一个 XML 文件。该脚本运行大约需要 60 秒,生成的 XML 文件大约为 16 MB。

我正在 Windows Server Web 版 SP1 64 位上通过 FastCGI 运行 PHP 5.2.13。

代码从 SQL Server 中提取 list ,运行循环来为第三方构建 XML 文件。

我在任务计划程序中创建了一个任务来运行 c:\php5\php.exe "D:\inetpub\tools\build.php"

任务计划程序显示大约一分钟的时间间隔,这是脚本在浏览器中运行所需的时间。

没有返回错误,但没有创建文件。

每次我更改计划任务属性时,都会出现一个用户密码框,我需要输入管理员帐户密码。

如果我在命令行运行相同的路径和参数,它不会出错,也不会创建文件。

当我右键单击以管理员身份运行命令提示符时,该文件仍然没有创建。我在文件创建之后收到回显语句“文件已发布”,并且没有返回错误。

我正在执行一个简单的 fopen fwrite fclose 将 php 变量的内容保存到 .xml 文件,并且仅当脚本通过浏览器运行时才会创建该文件。

以下是 xml 构建循环之后发生的情况:


$feedContent .= "</feed>";



<pre><code>sqlsrv_close( $conn );

echo "<p>feed built</p>";

$feedFile = "feed.xml";

$handler = fopen($feedFile, 'w');

fwrite( $handler, $feedContent );

fclose( $handler );

echo "<p>file published</p>";
</code></pre>

谢谢

最佳答案

您很可能需要指定 Feed 文件的绝对路径。目前尚不清楚您从哪里执行脚本,但脚本的“工作目录”通常是它的启动位置:

 c:\some\deeply\nested\directory> c:\php5\php.exe d:\inetpub\tools\build.php

将尝试将提要文件写入:

 c:\some\deeply\nested\directory\feed.xml

而不是在 c:\php5 或 d:\inetpub\tools

我不知道任务计划程序使用什么作为默认目录,但很可能它不是您所期望的。

还要检查您在任务计划程序中运行作业的帐户是否对输出目录具有写入权限。并且始终检查 fopen() 调用是否成功(失败时返回 FALSE)。

关于php - 为什么 PHP 脚本无法通过命令行或任务调度程序在 Server 2008 上写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2812057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com