0

当我尝试运行 shell 脚本时execshell_exe什么也没有发生!当我使用这些命令lswhoami所有工作运行时。

会是什么呢?

4

4 回答 4

2

你回显输出吗?

echo exec('ls');

您是否启用了安全模式?

phpinfo();

是时:(来自手册)

注意:启用安全模式后,您只能执行 safe_mode_exec_dir 中的文件。出于实际原因,目前不允许在可执行文件的路径中包含 .. 组件。

尝试调用 exec

exec('...pathtoyourbashscript...', $out, $return);

然后

echo $return;

如果它显示127它很可能路径是错误的。

还要检查权限。用户 'nobody' 可能是 apache 用户,它需要访问和执行脚本的权限。

您可以通过运行更改权限

chmod 755 pathtouyourscript

这意味着类似“我不介意其他人是否阅读或运行此文件,但只有我应该能够修改它”。

于 2012-06-04T16:17:37.827 回答
0

如果您使用的是 Apache,请检查以确保 Apache 用户具有执行 php 文件所需的权限。

于 2012-06-04T16:57:03.527 回答
0

您可以使用反射来确定该功能是否已被禁用disable_functions

$exec = new ReflectionFunction('exec');
print $exec->isDisabled() ? 'Disabled' : 'Enabled';
于 2012-06-04T22:09:03.457 回答
0

如果程序是基于 web 的,即 linux,请尝试制作一个 php 文件来处理 shell。和一个 shell 文件来处理 php..

例如:runAllShell.php 文件可以包含一个循环。:

<?php
// Developed by A T.
// Count the files
$directory = '/put/directory/path_here/';
$files = glob($directory . '*.*');

if ( $files !== false )
{
    $filecounter = count( $files );

}
else
{
    echo "No Files were found";
}
$fileCount = $filecounter;

// Start the index
$fileNumber = 1;
while($fileNumber <= fileCount){
shell_exec('$fileNumber . ".sh"');
// get some feedback
echo "The ".$fileNumber." file has been excecuted";
// increment file number
$fileNumber++;

}
?>

确保目录中的所有 .sh 文件都按数字顺序排列以使其正常工作,即:1.sh 2.sh 3.sh 等等。

最好的问候, AT。

于 2017-05-01T03:41:46.047 回答