标签: exec

通过PHP帮助exec命令

我正在尝试运行PHP exec命令.它在我的CMD中像魅力一样运行,但是当我通过PHP尝试时它没有做任何事情.谁能看到我在这里做错了什么.

谢谢.

<?php

//Command line command
//"C:\Program Files (x86)\PHP\v5.3\php-cgi.exe" "C:\inetpub\wwwroot\dev_site\images\0000\thumbs.php"
//This runs perfectly fine.

echo "Command line execution started<br />";
//This is when $desination is already set to 0000
echo  exec("C:\\Program Files (x86)\\PHP\\v5.3\\php-cgi.exe C:\\inetpub\\wwwroot\\dev_site\\images\\$destination\\thumbs.php");
echo "<br />Command line command successful";
//Does not run
?>
Run Code Online (Sandbox Code Playgroud)

php cmd exec

1
推荐指数
1
解决办法
3677
查看次数

PHP exec使用ffmpeg转换目录中的所有文件

我如何通过扩展名.flv在一个目录中循环播放视频文件并使用exec将它们中的每一个(一次一个)转换为mpg ffmpeg -i original.avi final.mpg

当前文件正在转换时,数组中的下一个文件名应该等到exec进程完成后再继续并转换数组中的其他文件名.

我知道我可以scandir($dir)用来创建所有文件名的数组,然后可以使用split to only target .flvfiles.这是最好的方法吗?如果我使用while循环运行每个文件名并对其执行exec,我如何确保exec文件完全转换后再转到数组中的下一个文件.

php directory ffmpeg exec

1
推荐指数
1
解决办法
1659
查看次数

echo exec工作,但exec没有

我正在使用红帽企业版n尝试制作一个简单的php页面..

当我尝试...

 // html code
 <?php
 echo exec(<cmd>); 
 ?>
// rest html code
Run Code Online (Sandbox Code Playgroud)

它的工作正常

但是当试用......

 // html code     
 <?php
 exec(<cmd>);
 ?>
 // rest html code
Run Code Online (Sandbox Code Playgroud)

它不起作用

即使像cat,ls等简单的命令也不起作用,我也尝试过2 > &1没有错误打印.

什么可能是错误???

php linux shell exec shell-exec

1
推荐指数
1
解决办法
1万
查看次数

如何从主管管理的PHP脚本中停止Supervisor进程(过程控制系统)?

我正在使用Supervisor并行化PHP脚本.当我的脚本从数据库获得某个响应时,它会执行一个命令来停止Supervisord守护程序使用的所有进程supervisorctl.这是命令:

// gracefully stop all processes in supervisor's group called processes
$cmd = 'sudo /usr/bin/supervisorctl stop processes:*';
exec( $cmd, $outputs );
Run Code Online (Sandbox Code Playgroud)

问题是,当在Supervisor的控制下从PHP脚本中触发时,此命令似乎没有任何影响.为什么?

如果我启动在Supervisor中运行的这组进程,然后直接从命令行触发另一个脚本实例,它就可以运行并且所有Supervisor进程都会停止.

到底是怎么回事?可以守护PHP脚本而不是exec()shell命令吗?

php exec supervisord

1
推荐指数
1
解决办法
6338
查看次数

Exec命令不起作用

我正在使用exec来运行这样的后台脚本:

$command = "/usr/local/bin/php public_html/r/index.php tools $action process $params > /dev/null &";
exec($command);
Run Code Online (Sandbox Code Playgroud)

问题是:它工作.

提示:

  • 当我从终端(通过SSH)执行相同的命令时,它工作正常.
  • exec命令已启用(我可以执行任何命令而不会出现问题).

有任何想法吗?

php codeigniter exec shell-exec command-line-interface

1
推荐指数
1
解决办法
1198
查看次数

Python - 用很多参数调用popen

我试图用一个参数列表调用popen.

    execString = "java -jar {} {} {} {} {} {}".format(os.path.join(config.java_root,
                                                                   config.java_jar),
                                               self.canvasSize,
                                               self.flightId,
                                               self.domain,
                                               self.defPath,
                                               self.harPath)
    execStringList = execString.split()
    print execStringList
    subprocess.Popen([execStringList])
Run Code Online (Sandbox Code Playgroud)

execStringList是:

['java', '-jar', '/Users/me/Projects/reporting-test/build/clickunit-0.1.jar', '300x1050', '123', 'dev.me.net', '/Users/me/Projects/reporting-test/src/definitions/300x1050.yml', '/Users/me/Projects/reporting-test/out/01/15112']
Run Code Online (Sandbox Code Playgroud)

根据:Python OSError:[Errno 2]是正确的格式.但是,我收到以下错误:

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 672, in __init__
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1202, in _execute_child
AttributeError: 'list' object has no attribute 'rfind'
Run Code Online (Sandbox Code Playgroud)

如果我将execString视为字符串,我会得到一个不同的错误:

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 672, in __init__
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1202, in _execute_child
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

即使我从终端运行此命令,它仍然有效.

$> java …
Run Code Online (Sandbox Code Playgroud)

python exec popen

1
推荐指数
1
解决办法
2346
查看次数

exec()之后的RUID和EUID

使用fork()操作子进程从父进程继承属性真实有效的用户ID,exec()执行时它的行为如何?

linux fork exec

1
推荐指数
1
解决办法
3058
查看次数

如何在PHP exec函数中显示进度栏

我正在使用PHP的exec()功能在PHP中运行外部脚本。我一直在寻找各种选项来创建进度条。我可以通过AJAX创建普通的旋转式装载机,但是无法达到进度条。有什么办法吗?

php shell cmd exec

1
推荐指数
1
解决办法
4868
查看次数

在exec()中重定向STDOUT和STDERR ......没有shell

我试图将Perl5用于fork()子进程.子进程应该exec()另一个程序,其重定向STDIN到一个命名管道,并STDOUTSTDERR日志文件.父进程继续在循环中运行,使用waitpid并检查$?重新启动子进程以防它以非零退出状态死亡.

exec()函数的Perl文档说:

如果LIST中有多个参数,则使用LIST中的参数调用execvp(3).如果LIST中只有一个元素,则检查参数是否为shell元字符,如果有,则将整个参数传递给系统的命令shell进行解析(这/bin/sh -c在Unix平台上,但在其他平台上有所不同).如果参数中没有shell元字符,则将其拆分为单词并直接传递给execvp,这样更有效.例子:

exec '/bin/echo', 'Your arguments are: ', @ARGV;
exec "sort $outfile | uniq";
Run Code Online (Sandbox Code Playgroud)

这听起来很酷,我想在没有中间shell的情况下运行我的外部程序,如这些示例所示.不幸的是,我无法将其与输出重定向(如/bin/foo > /tmp/stdout)相结合.

换句话说,这不起作用:

exec ( '/bin/ls', '/etc', '>/tmp/stdout' );
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:如何在STD*不使用shell的情况下为我的子命令重定向文件?

perl stdin stdout exec stderr

1
推荐指数
1
解决办法
836
查看次数

如何在特定的行和列处打开文件?

我正在开发一个需要vim在任意行和任意列中打开文件的模块。我正在通过进行操作exec(),但vim没有获得正确的行和列:

如果我将其简化为单线:

perl -E "exec(q{vim}, q{+'call cursor(1,3)'}, q{README.md})"
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

"README.md" 116L, 3790C
Error detected while processing command line:
E20: Mark not set
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

vim显示此错误时,ps显示vim +'call cursor(1,3)' README.md,这是我想要的命令。实际上,复制/粘贴vim +'call cursor(1,3)' README.md到新的终端窗口中可以使我获得所需的行为。

在我看来,vim当通过Perl的命令运行命令时,该行是116,而不是1,该列是3790,而不是3 exec()

这是Perl 5.26.1,Vim 8.1和GNU bash版本3.2.57(1)-发行版(x86_64-apple-darwin18)。

vim bash perl exec

1
推荐指数
1
解决办法
74
查看次数