无法从PHP在bat中执行copy命令

无法从PHP在bat中执行copy命令,php,windows,batch-file,Php,Windows,Batch File,我正在用PHP尝试一件非常简单的事情。我想从PHP脚本执行一个外部bat文件,该脚本是从web服务器(带有WAMP的Apache)调用的。下面是名为savereport.bat的bat文件的内容 echo %PATH% > C:\project\mypath.txt cp D:\books\Ant\1.pdf D:\books\Ant\2.pdf 手动执行时,bat文件工作正常,它在C:\project目录中创建mypath.txt,1.pdf被正确复制到2.pdf 但是,当我使用sys

我正在用PHP尝试一件非常简单的事情。我想从PHP脚本执行一个外部bat文件,该脚本是从web服务器(带有WAMP的Apache)调用的。下面是名为savereport.bat的bat文件的内容

echo %PATH% > C:\project\mypath.txt
cp D:\books\Ant\1.pdf D:\books\Ant\2.pdf
手动执行时,bat文件工作正常,它在C:\project目录中创建mypath.txt,1.pdf被正确复制到2.pdf

但是,当我使用system()从PHP运行相同的bat文件时,只有第一条语句完成,这意味着它确实创建了C:\project\mypath.txt,但奇怪的是,它没有将1.pdf复制到2.pdf

这是我正在使用的PHP代码

<?php
system('C:\wamp\www\savereport.bat');
?>


我还尝试了exec()、passthru,在所有情况下都得到了相同的结果。请提供帮助。

cp
不是windows命令,它可能是Powershell别名,请将
cp
替换为
copy

我认为“cp”不是本机windows命令。如果是添加到windows安装中的内容,PHP的system()调用可能无法在路径中找到它。您尝试过“copy”命令吗?是的,我安装了git bash和cygwin,这就是为什么它在手动运行时会识别cp,因为apache服务器使用的是不同的用户。因此,特定于cp的路径信息不可用。我可以在apache_error.log中找到以下信息“cp”未被识别为内部或外部命令、可操作程序或批处理文件。好的,那么您是否将命令从
cp
更改为
copy
并重新检查了?是的,它起作用了:)我只是作为一个示例尝试cp,在意识到路径信息不可用之后,我提供了我想要执行的exe的完全绝对路径,即wkhtmltopdf,因此新代码现在是exec(“C:\\Program Files\\wkhtmltopdf.exe”)。现在可以了!