til*_*lda 2 php apache networking exec drive
在PHP中,我通过调用列出了一些文件exec("dir ...")。但是,这奇怪地仅适用于本地驱动器。在网络驱动器上,它具有非零结果状态代码,并且不返回任何结果。
我在Windows XP Professional上运行Apache。
有什么技巧可以解决此问题?还是查看错误消息?
编辑:apache在与我相同的用户下运行,我可以从命令行进行操作
我要说的是“您也不能从命令行执行此操作”,而且我敢肯定那是真的,但是我刚刚尝试过WinXP Pro SP3,它正在起作用,这只是为了让我生气。
前段时间,我不得不让PHP与网络驱动器进行通信(当时我在PHP世界中确实变得更加环保),我梦had以求地使其工作,但是最终我通过执行以下操作使其得以工作:
system('net use Z: "\\servername\sharename" PASSWORD /user:USERNAME /persistent:no');,在其中更改驱动器号,UNC路径,用户名等以符合您的要求。即使驱动器已映射,也要执行此操作。我似乎记得我不得不使用system()代替exec()或shell_exec()或它不起作用-因此,您需要使用output-buffer来停止将输出传递到STDOUT。我不知道为什么这样做有效,但确实如此。但是请注意,我试图将驱动器与本机PHP函数(例如opendir()和)一起使用fopen(),而不是尝试exec()针对它使用外部程序。
如果要查看对的调用所产生的错误消息,请dir追加2>&1到命令末尾。这会将STDERR重定向到STDOUT,因此您应该在的结果中获取错误消息exec()。
所以你的行看起来像:
exec("dir Z:\\some\\path 2>&1")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2844 次 |
| 最近记录: |