我有一个php文件'run.php',我正在终端上运行.在这个文件中,我有以下几行:
exec("open-crawlers $ port 2>&1",$ out,$ code); echo'hello';
我遇到的问题是终端在执行'exec'命令后挂起; 该计划没有到达第二行.
我有这个shell程序,我想通过php执行.问题是它可能需要很长时间,因此我需要它来实时更新用户的浏览器.
我读到我可能需要使用popen()来做到这一点,但我有点(好吧,我真的是:P)一个PHP菜鸟,无法弄清楚我怎么能做到这一点.
非常感谢任何帮助!
我试图使用shell_exec运行命令,但它没有返回任何输出.当我将命令复制到命令提示符时,它就像一个魅力.
这是我正在尝试运行的命令.
$result = shell_exec('android update project -p "C:\xampp\htdocs\appBuilder" -t 1');
Run Code Online (Sandbox Code Playgroud)
$result正在返回一个空字符串.当我在命令提示符下运行该命令时,它会显示一条消息,说明该build.xml文件已成功生成.它应该显示成功消息$result.
如果我android update project -p "C:\xampp\htdocs\appBuilder" -t 1在命令提示符下运行命令,它就可以工作.
仅供参考:此命令build.xml用于为Android应用程序生成文件.我也使用xampp在本地Web服务器上运行它.
谁知道我做错了什么?
嗨伙计们我试图用PHP编译一个C程序与exec和Laravel框架但我不认为这是问题,因为我可以从终端编译和执行C程序没有问题,如果你知道从修补程序在Laravel 5所以问题来自PHP,但我找不到错误我认为问题是形成不同版本的GCC,但为什么让我从终端编译.
我从PHP那里得到这个错误.如果我从终端编译它可以工作,但从PHP没有.
$path = public_path("testing/cosas.out");
exec("gcc testing/pruebaC.c -o testing/from.out 2>&1",$output,$status);
dd($output,$status); //is like var_dump
Run Code Online (Sandbox Code Playgroud)
我得到了!!
gcc:错误尝试执行'cc1':execvp:没有这样的文件或目录"
我检查了权限,事实上我在绝望XD中做了chmod 777而且我尝试重新安装一切,但它不起作用.我很沮丧,我希望你能帮助我.
对不起我的英语,如果我犯了语法错误,谢谢我等待你的帮助:D
我正在pdfgrep搜索PDF文档中关键字的所有外观。
现在,我想通过PHP执行此操作,以便可以在我的网站中使用它。
但是,当我运行时:
$output = shell_exec("pdfgrep -i $keyword $file");
$var_dump($output);
Run Code Online (Sandbox Code Playgroud)
$keyword关键字和$file文件在哪里,我没有得到全部输出。
PDF由产品代码,产品名称和产品价格表组成。
通过终端执行命令时,可以看到整行数据:
product code 1 product name with keyword substring corresponding price
product code 2 product name with keyword substring corresponding price
product code 3 product name with keyword substring corresponding price
Run Code Online (Sandbox Code Playgroud)
但是,当我通过PHP运行它时,我得到如下信息:
name with keyword substring with keyword substring product code 1
product name with keyword substring product name with keyword substring
corresponding price
Run Code Online (Sandbox Code Playgroud)
它只是不获取所有数据。它并不总是获得产品代码和价格,并且在很多情况下也没有获得整个产品名称。
我通过浏览器查看输出并放入,header('Content-Type: text/plain');但是它只能美化输出,数据仍然不完整。
我试图通过Python3.6运行完全相同的shell脚本,这给了我所需的输出。
现在,我尝试通过PHP运行相同的Python脚本,但仍然得到相同的损坏输出。
我尝试运行一个我知道会返回较短输出的关键字,但是我仍然没有得到所需的整个数据行。
有什么方法可以可靠地获取 …
我有一个 exe 文件,其中包含以下代码:
同时(1)
printf("你好\n");
我正在使用 shell_exec 通过 php 执行这个 exe
$output = shell_exec('C:/Users/thekosmix/Desktop/hello.exe 2>&1');
回声$输出;
现在脚本执行了很长时间,直到我从任务管理器中终止进程并给出致命错误:
(致命错误:第 7 行 C:\xampp\htdocs\shell\index.php 中允许的内存大小为 134217728 字节(试图分配 133693440 字节)
我希望脚本(或此函数)在给定的持续时间内运行,并打印在持续时间内生成的任何输出,而不是任何致命错误。set_time_limit() 也没有解决问题。
我会使用以下代码:
$SERVER_PATH = dirname(__FILE__);
shell_exec($PHP_LOCATION.' '.$SERVER_PATH."/script.php?k1=v1&k2=v2 > /dev/null 2>/dev/null &");
Run Code Online (Sandbox Code Playgroud)
在哪里:
$PHP_LOCATION应包含 PHP 的路径,
$SERVER_PATH- 是当前工作目录(幸运的是要运行的脚本位于同一目录中),
> /dev/null 2>/dev/null &添加以使此调用异步(取自Asynchronous shell exec in PHP Question)
这段代码有两个问题:
据我记得?k1=v1&k2=v2仅适用于网络调用,因此在这种特殊情况下参数不会传递给脚本。
我真的不知道如何初始化$PHP_LOCATION变量以使其灵活并在大多数主机上工作。
我对这两个问题进行了一些研究:
要解决1 ,建议使用-- 'parameters_string',但也建议修改脚本来解析参数字符串,这看起来有点笨拙。有更好的解决方案吗?
为了解决2,我找到了一个可以使用的解决方案PHP_BINARY,但这是一个 PHP 5.4+ 的情况(我使用的是 5.3)。但最初的问题是运行与原始脚本版本相同版本的 PHP。那么对我来说(因为我只使用 PHP 5.3)可能有解决方案吗?
编辑0
让我解释一下为什么我坚持这种奇怪的(对于 PHP)方法:
这些 PHP 脚本应该彼此分开:
其中之一将分析数据并
第二个将生成 PNG 图形作为最终结果。
这些脚本并不打算同时运行,这意味着第二个脚本可以按照自己的计划运行,只需要在其数据准备就绪时运行(由第一个脚本完成)。因此,不应将任何数据从第二个脚本(子脚本)传回第一个脚本(父脚本)。
编辑1
从大多数评论来看,主要讨论是分叉方向。不过,我想强调一下最初问题中提出的第 1点和第 2 点。我有一些理由按照我指出的方式解决任务,并且我试图指出所有这些原因。如果我的某些观点看起来很奇怪,请发表评论 - …
我想php ../cat1/index.php gr_s2/3/gr-n40 1200通过 php 运行命令。shell_exec 返回 NULL 作为结果,但是当我在 cmd 上尝试该命令时,输出显示正确。
php 和 shell_exec 中发生了什么?
注意:具有不同参数的命令(例如:)php ../cat1/index.php gr_s2/3/gr-n40 800在(php 和 cmd)中都可以正常工作。
我正在按照本指南通过 Git 部署我的网站,但在使用 PHP shell_exec() 或 exec() 时遇到了一些问题。部署脚本运行多个命令,例如git、whoami、which git、rsync等。当我以服务器用户身份登录时,所有这些命令都有效。
然而,当我点击应该运行这些命令的 php 脚本时,它们不起作用。
whoami: command not found
git: command not found
rsync: command not found
which: command not found
我可以通过提供命令的路径(例如/usr/bin/whoami=> myuser)来解决此问题,但某些命令/usr/bin/which rsync仍然不起作用。(那个给了我/usr/bin/which: no rsync in (/bin))
这些对于让项目正常运行并不重要,但我仍然想知道是否存在某种权限问题或我做错了什么。有人对这里有任何见解吗?
所以我有一个问题,在我看来应该很容易解决。我想通过 ssh 连接到服务器,我已经这样做了很多次,然后让 shell 执行,我也已经这样做了很多次,但它不起作用。
我正在使用的代码
<?php
$ip = '1.2.3.4';
$cmd = "ssh user@".$ip;
$result = shell_exec($cmd." 'sudo /bin/systemctl stop wildfly.service'");
echo "<pre>output: $result</pre>";
echo "<div class='alert alert-success'><strong>SUCCESS</strong><br>Wildfly node has now restarted</div>";
?>
Run Code Online (Sandbox Code Playgroud)
直接从终端运行命令
ssh user@1.2.3.4 sudo /bin/systemctl stop wildfly.service
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是在 php 中运行它不会给我任何结果,而且它也没有做任何事情。
有人可以指导我发现我的 shell_exec 做错了什么吗?
提前致谢!
php ×10
shell-exec ×10
exec ×2
linux ×2
terminal ×2
c ×1
cmd ×1
command ×1
command-line ×1
fatal-error ×1
gcc ×1
popen ×1
python-3.x ×1