我正在尝试运行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) 我如何通过扩展名.flv在一个目录中循环播放视频文件并使用exec将它们中的每一个(一次一个)转换为mpg ffmpeg -i original.avi final.mpg
当前文件正在转换时,数组中的下一个文件名应该等到exec进程完成后再继续并转换数组中的其他文件名.
我知道我可以scandir($dir)用来创建所有文件名的数组,然后可以使用split to only target .flvfiles.这是最好的方法吗?如果我使用while循环运行每个文件名并对其执行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没有错误打印.
什么可能是错误???
我正在使用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命令吗?
我正在使用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)
问题是:它不工作.
提示:
exec命令已启用(我可以执行任何命令而不会出现问题).有任何想法吗?
我试图用一个参数列表调用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) 使用fork()操作子进程从父进程继承属性真实有效的用户ID,exec()执行时它的行为如何?
我正在使用PHP的exec()功能在PHP中运行外部脚本。我一直在寻找各种选项来创建进度条。我可以通过AJAX创建普通的旋转式装载机,但是无法达到进度条。有什么办法吗?
我试图将Perl5用于fork()子进程.子进程应该exec()另一个程序,其重定向STDIN到一个命名管道,并STDOUT和STDERR日志文件.父进程继续在循环中运行,使用waitpid并检查$?重新启动子进程以防它以非零退出状态死亡.
该exec()函数的Perl文档说:
如果LIST中有多个参数,则使用LIST中的参数调用execvp(3).如果LIST中只有一个元素,则检查参数是否为shell元字符,如果有,则将整个参数传递给系统的命令shell进行解析(这
/bin/sh -c在Unix平台上,但在其他平台上有所不同).如果参数中没有shell元字符,则将其拆分为单词并直接传递给execvp,这样更有效.例子:Run Code Online (Sandbox Code Playgroud)exec '/bin/echo', 'Your arguments are: ', @ARGV; exec "sort $outfile | uniq";
这听起来很酷,我想在没有中间shell的情况下运行我的外部程序,如这些示例所示.不幸的是,我无法将其与输出重定向(如/bin/foo > /tmp/stdout)相结合.
换句话说,这不起作用:
exec ( '/bin/ls', '/etc', '>/tmp/stdout' );
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:如何在STD*不使用shell的情况下为我的子命令重定向文件?
我正在开发一个需要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)。