Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP exec()和system()函数在IIS中总是返回false_Php_Windows_Iis_System_Exec - Fatal编程技术网

PHP exec()和system()函数在IIS中总是返回false

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 exec()或system()(或任何其他类似函数)来运行批处理文件,但我似乎无法让它们返回任何内容

我见过的最简单的例子是,它什么也不输出:

<?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
二进制文件。例如,试图使用PHP
shell_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>";
}
?>