所以我读了大约10个答案,每个人似乎都建议出于某种原因不起作用的想法。
我正在尝试执行一个简单的命令行,即“svn update”,但它不起作用,它返回NULL
所以我尝试过试错法,现在这就是我能说的;
我尝试了几个命令,比如
<?php
exec ("cmd /c ping 127.0.0.1 -n 1 > results.txt ");
?>
和
<?php
exec ("cmd /c chdir > results.txt ");
?>
并且都工作.. infact chdir说执行该行的php文件存储在PC上的确切位置..
所以现在的问题是,为什么这样的命令会这样:
<?php
exec ("cmd /c dir > results.txt ");
?>
不工作?这个结果和空值即使在文件夹中我有几个文件和目录。
以及为什么如果我使用命令提示符移动到存储php文件的文件夹并键入svn update它可以正常工作
<?php
exec ("cmd /c svn update > results.txt ");
?>
返回NULL?
非常感谢任何帮助。
感觉我对配置设置有一些限制,因为当我在本地使用apache尝试时,我可以使大多数命令工作(shell_exec,system,exec,即使没有cmd / c)
答案 0 :(得分:8)
确定。
我设法解决了这个问题..
这就是我所做的:
首先确切检查特定网站的用户名是什么..这样做:
<?php
$out = array();
exec('cmd /c whoami 2>&1',$out,$exitcode);
echo "<br />EXEC: ( exitcode : $exitcode )";
echo "<hr /><pre>";
print_r($out);
echo "</pre>";
?>
这将返回computername,后跟用户名..
现在在运行网络服务器的计算机上运行
control userpasswords2
并授予管理员权限whoami说
这将允许您最终使用exec或system_exec
运行您想要的任何命令另一方面继续我的SVN命令我发现我还有另一个问题,那就是当你运行它时,它会查找管理员帐户下的配置文件,并会出错:
svn: E125001: Can't determine the user's config path
要解决此问题,您只需在命令中指定config_dir:
exec('cmd /c svn update --config-dir C:\Users\Administrator\AppData\Roaming\Subversion C:\\inetpub\\vhosts\\websitename\\httpdocs\\folder 2>&1',$out,$exitcode);
希望这可以帮助那些遇到问题的人!
答案 1 :(得分:0)
这可能是系统用户权限问题。我试过你的例子:
<?php exec ("cmd /c dir > results.txt "); ?>
在安装了Xampp的Windows7上,它运行得非常好。但是对于IIS,“用户”可能没有该目录的权限,我认为它可能是系统用户IIS-IUSR或类似的东西。
以下链接可能有助于IIS的用户权限:http://www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis
答案 2 :(得分:0)
好的,根据你的答案,我认为你应该试试这个:
使用'svn.exe'可执行文件执行命令(替换[[reposity location]])。 您的客户端可能有另一个svn.exe位置,但您必须自己解决这个问题:)
exec('cmd /c "c:\\Program Files\\TortoiseSVN\\bin\\svn.exe" up "[[repository location]]"');
现在发生了什么?
exec
中还有第二个参数,也许你也应该看看那个参数。
答案 3 :(得分:0)
唯一帮助我的是完整的路线:
app.handle('rhymeHandler', async conv => {
const result = await axios.get(`https://api.datamuse.com/words?rel_rhy=book`)
result.data.map(wordObj => {
console.log(wordObj.word);
words = [...words, wordObj.word];
});
addWords(conv);
});