PHP exec()和system()函数在IIS中总是返回false
我试图使用PHP exec()或system()(或任何其他类似函数)来运行批处理文件,但我似乎无法让它们返回任何内容 我见过的最简单的例子是,它什么也不输出:PHP exec()和system()函数在IIS中总是返回false,php,windows,iis,system,exec,Php,Windows,Iis,System,Exec,我试图使用PHP exec()或system()(或任何其他类似函数)来运行批处理文件,但我似乎无法让它们返回任何内容 我见过的最简单的例子是,它什么也不输出: <?php echo system('dir'); ?> 编辑:第三个示例 基于Manos Dilaverakis,我尝试了以下代码 <?php exec('dir', $response); foreach($response as $line) { echo $line . "<br>
<?php
echo system('dir');
?>
编辑:第三个示例
基于Manos Dilaverakis,我尝试了以下代码
<?php
exec('dir', $response);
foreach($response as $line) {
echo $line . "<br>";
}
?>
有人有任何进一步的建议或其他我可以尝试的吗?要获取返回值,需要传递系统函数的第二个参数
$last_line = system('ls', $retval);
此处
$retval
将具有ls执行的返回值 在这里,如果这不起作用,那么exec可能在php.ini中被禁用,这意味着您必须更改您的php配置
<?php
exec('dir', $response);
foreach($response as $line) {
echo $line . "<br>";
}
?>
使用windows和PHP时,一些命令(包括dir
,以及其他windows命令,如ping)无法将其返回值正确地输出到PHP.exe
二进制文件。例如,试图使用PHPshell_exec()
函数获取dir
以生成输出,结果总是“false”。如果尝试给它一个类似于dir c:\
的值,它将导致:NULL
,这与FALSE
类似,因为它没有提供任何有用的内容。唯一的解决方法是使用php内置的scandir()
,并使用php手动制作您自己的dir
。…关于exec和系统的php手册页回答了这个问题。你甚至不需要滚动down@ManosDilaverakis-你能说得更具体一点吗?exec函数的文本声明“返回值:命令结果的最后一行。”-那么我不应该看到我运行的任何命令的最后一行输出吗?我尝试了这个,并将它添加到我上面的问题中-$retval是-1,而不是我期望的输出。我刚刚尝试了这个,而且输出是简单的并且php.ini中似乎没有禁用任何函数。
<br>
disable_functions =
$last_line = system('ls', $retval);
<?php
exec('dir', $response);
foreach($response as $line) {
echo $line . "<br>";
}
?>