我试图使用PHP exec调用调用一个需要几秒钟(与第三方的Web服务)的脚本.经过多次努力,我把它减少到了经典的hello world例子.调用脚本如下所示:
exec('/usr/bin/php /home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &');
Run Code Online (Sandbox Code Playgroud)
当我运行它时,输出execoutput.txt包含调用脚本页面的副本,而不是hello world我预期的.
为什么我不能使用exec执行此PHP脚本?请注意,当我将命令更改为类似命令时ls -l,输出是按预期方式列出的目录.顺便说一下,如果重要的话,我把调用的脚本chmod到了755 ......
更新 - 我将exec调用移动到调用脚本的末尾,至少现在我没有看到在输出中执行调用脚本.感谢海报,我会尝试其中的一些想法.
救命!
谢谢Steve
我正在为我们公司使用的一个可怕的软件编写一个Web界面.该软件没有真正的用户界面,需要我们为我们的客户提供putty访问我们的系统甚至提取数据.我的Web界面必须运行一个exec();函数,它必须传递用户输入的一些变量.
$command = "report-call '$type' '$study' '$server' '$tag' '$specopt1' '$specopt2' '$specopt3' '$specopt4'";
$last_line = exec($command, $output, $returnvalue);
Run Code Online (Sandbox Code Playgroud)
现在我假设我可能只是从$command变量中删除任何分号并且是安全的,但我不确定,这就是为什么我在下个月上线之前在这里提出这个问题.
什么是最好的消毒方法$command?我确实需要在变量中使用一些特殊的字符 [ ] < > ! # $.
我有一个关于Linux上进程的堆栈大小的问题.此堆栈大小是否在链接时确定并在ELF文件中编码?
我写了一个程序,打印出它的堆栈大小pthread_attr_getstacksize(&attr, &stacksize);.如果我直接从shell运行这个程序,它会提供大约10MB的值.但是当我exec从一个属于多线程程序的线程中,它给出了大约2MB的值.
所以我想知道哪些因素会影响fork and exec某个父进程的进程堆栈大小.是否可以fork and exec在孩子之前的运行时在其父级中设置进程的堆栈大小?
提前致谢.
我正在搜索配置文件夹,并尝试更改到该目录:
find . -name "config" -exec cd {} \;
有一场比赛,./my-applications/config但在我尝试之后它会说:
find: `cd': No such file or directory
我究竟做错了什么?
我正在使用Mocha来测试我的应用.目前,我正在使用Makefiles,但我想切换到Cakefiles.当我通过Cake运行我的测试时,Mocha的颜色不会显示在控制台上.
这是一个例子:
task 'test', 'test project', (options) ->
fetchTestFiles './test', (err,files) ->
mocha = spawn 'mocha', files
mocha.stdout.pipe(process.stdout, end: false)
Run Code Online (Sandbox Code Playgroud)
现在,我尝试这样做:
task 'test', 'test project', (options) ->
fetchTestFiles './test', (err,files) ->
mocha = spawn 'mocha', files, customFds: [0..2]
Run Code Online (Sandbox Code Playgroud)
这是有效的,但Node.js文档声明customFds已弃用.有没有办法通过颜色而不使用customFds?
我只想从特定文件夹执行我的文件.在我的情况下/ data/data/my-package/files /.所以我试过:
Process process2=Runtime.getRuntime().exec("cd /data/data/my-package/files/");
process2.waitFor();
process2=Runtime.getRuntime().exec("./myfile");
Run Code Online (Sandbox Code Playgroud)
它不起作用.请问有没有人能以正确的方式告诉我.谢谢
我正在尝试使用以下命令在后台处理文件,但它什么都不做.
exec("php csv.php $file $user > /dev/null &", $output);
Run Code Online (Sandbox Code Playgroud)
如果我删除> /dev/null &然后文件进程,但不在后台.
exec("php csv.php $file $user", $output);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
例如,我正在运行节点中最基本的webServer(我正在使用Windows),其中包含以下代码(名为server.js):
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Run Code Online (Sandbox Code Playgroud)
我想将它作为子进程运行,并且使用以下代码成功完成:
var exec = require('child_process').exec;
var serv = exec('node server.js', function(error, stdout, stderr){
console.log('outputs & errors:' + error, stdout, stderr);
});
Run Code Online (Sandbox Code Playgroud)
但是,一旦运行第二个文件,我什么也得不到.没有"输出和错误",没有"服务器运行在......".如果我在浏览器中键入localhost:1337,我会得到"hello world",所以我知道它正在运行.有没有办法管道"服务器正在运行......"所以我可以"肯定"它在听?
我正在尝试在docker exec中执行两个命令.具体来说,我必须在特定目录中运行命令.我试过这个,但是没有用:
docker exec [id] -c 'cd /var/www/project && composer install'
Run Code Online (Sandbox Code Playgroud)
-c未检测到参数.我也试过这个:
docker exec [id] cd /var/www/project && composer install
Run Code Online (Sandbox Code Playgroud)
但该命令composer install在docker exec命令后执行.我该怎么做?
我可以使用sudo或su以另一个用户身份执行命令.通过组合exec,我能够用sudo或替换当前进程su,以及运行命令的子进程.但我想用另一个用户运行的命令替换当前进程.我怎么做?
使用sleep inf命令和someguy用户进行测试:
exec su someguy -c 'sleep inf'
Run Code Online (Sandbox Code Playgroud)
这给了我pstree:
bash???su???sleep
Run Code Online (Sandbox Code Playgroud)
和
exec sudo -u someguy sleep inf
Run Code Online (Sandbox Code Playgroud)
给
bash???sudo???sleep
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我只想要sleep命令,bash作为父命令.
我希望我能有什么的一些序列做到这一点由C setuid()和exec().