问题
我有一个PHP脚本,用于shell_exec运行pdf到文本转换器。为了简化该问题,我创建了一个简短的脚本,该脚本shell_exec仅用于回显dir命令的输出。
<?php
$cmd = 'C:\\WINDOWS\\system32\\cmd.exe /c ';
echo shell_exec($cmd.' dir');
?>
Run Code Online (Sandbox Code Playgroud)
当我在Apache服务器上运行此程序时,一切都会按预期进行。当我切换到IIS时,好像该行被完全跳过了:没有错误,没有输出,没有日志,什么也没有。
不幸的是,我需要使用IIS,因为我将根据活动目录对用户进行身份验证。
到目前为止,这是我尝试过的方法:
cmd.exe /c发出命令而不是直接发出命令Read & Execute权限SERVICERead & Execute权限NETWORK SERVICERead & Execute权限IUSR_MACHINENAMERead & Execute权限Everyone(不用担心,它不会长期保持这种状态,哈哈)CGI …可能重复:
PHP中的异步shell exec
我需要在后台运行一个java程序.
process.php包含
shell_exec("php php_cli.php")
php_cli.php包含
shell_exec("java -jar BiForce.jar settings.ini > log.txt");
Run Code Online (Sandbox Code Playgroud)
我使用ajax异步调用process.php
当我单击调用ajax函数的网页中的链接(用于运行process.php)时,webage显示"正在加载".当我同时点击其他链接时它没有响应.
java程序大约需要24小时才能完成执行,因此用户不会等到执行结束.
问题是浏览器继续加载,并且在单击链接时不会转到其他页面.
我也尝试过system(),但同样的问题....
非常感谢帮助.
我知道这个问题之前已经有很多不同的问题,但是我仍然在摸不着为什么我不能让这个问题起作用.
首先,我有两个SLES服务器设置,它们是服务器A和服务器B,它们都运行在一个小型专用网络上,只能由一个专门的团队访问.
服务器A配置为运行Apache,PHP,MYSQL和ssh的Web服务器,所有这些服务器都运行无问题.
服务器B用于运行安装和激活ssh的内侧任务.
我已经在服务器A上创建了我的rsa密钥,并将其安装在服务器B上,当在命令行运行时,我会立即登录,不需要输入密码.我在服务器A上为root和nobody帐户重复了这个过程.
我已将这个PHP页面添加到服务器A,如下所示:
<?php
shell_exec('ssh root@192.162.0.5 ./StartTest.sh');
header("Location: archive.php?page=home");
?>
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时它不会创建我的文件夹.如果我从命令行运行它,它适用于两者(我想两者,我不记得我是否尝试过现在cli上的nobody帐户)root&nobody帐户.我甚至将无人帐户添加到根组,但仍然没有快乐.
我在这里错过了一些东西吗?我想做的就是通过php&ssh从服务器A连接到服务器B来执行一个命令并重定向到网站上的另一个页面.
由于我的对乙酰氨基酚库存不足,所以任何帮助都会受到赞赏.
我正在尝试运行一个运行PowerShell脚本的简单PHP,如果我使用此代码,我会在命令窗口中获得结果,但我在浏览器中得到一个空数组:
<?php
exec("powershell C:\\Inetpub\\wwwroot\\my_shell.ps1 < NUL", $output);
echo "<pre>";
print_r($output);
echo "</pre>";
?>
Run Code Online (Sandbox Code Playgroud)
我相信NUL将丢弃输出,但是它在浏览器中发现了它[这个Fourm] [1]
如果我使用这个代码,没有NUL,我会在命令窗口中得到结果,但如果我在浏览器中运行脚本将继续加载,它永远不会给我任何结果:
exec("powershell C:\\Inetpub\\wwwroot\\emsrDev\\manual_shell.ps1", $output);
Run Code Online (Sandbox Code Playgroud)
如果我这样做,结果相同:
$output = shell_exec("powershell C:\\Inetpub\\wwwroot\\emsrDev\\manual_shell.ps1");
Run Code Online (Sandbox Code Playgroud)
如果我独立运行powershell脚本运行正常:
$cmd = "cmd.exe";
&$cmd "/C echo update tasks set last='manual' where id='8'; | sqlplus vvv/www@xxx";
Run Code Online (Sandbox Code Playgroud)
所以我需要在浏览器中执行此操作并获取输出.
我试图转换.docx文件,以.html使用php shell_exec于CentOS 6.5
我的PHP代码:
$command = "libreoffice --headless -convert-to html resume.docx 2>&1";
$result = shell_exec($command);
echo $result;
Run Code Online (Sandbox Code Playgroud)
当我跑步时index.php,http://localhost/converter/它给了我:
javaldx:找不到Java运行时环境!警告:无法从javaldx读取路径/usr/lib64/libreoffice/program/soffice.bin X11错误:无法打开显示:设置DISPLAY环境变量,使用-display选项或检查X-Server的权限(参见"man" X"resp."man xhost"了解详情)`
在终端,它完美地工作:
cd /var/www/html/converter/
libreoffice --healdess -convert-to html resume.docx
在这里它创造resume.html了我的/var/www/html/converter/.
我有一个像这样的对象服务器的数组:
Array
(
[0](
(
[id] => 1
[version] => 1
[server_addr] => 192.168.5.210
[server_name] => server1
)
)
[1](
(
[id] => 2
[server_addr] => 192.168.5.211
[server_name] => server2
)
)
)
Run Code Online (Sandbox Code Playgroud)
通过运行下面的代码,我能够获得所需的输出
foreach ($model as $server) {
$cpu_usage = shell_exec('sudo path/to/total_cpu_usage.sh '.$server->server_addr);
$memory_usage = shell_exec('sudo path/to/total_memory_usage.sh '.$server->server_addr);
$disk_space = shell_exec('sudo path/to/disk_space.sh '.$server->server_addr);
$inode_space = shell_exec('sudo path/to/inode_space.sh '.$server->server_addr);
$network = shell_exec('sudo path/to/network.sh '.$server->server_addr);
exec('sudo path/to/process.sh '.$server->server_addr, $processString);
$processArray = array();
foreach ($processString as $i) {
$row = explode(" ", …Run Code Online (Sandbox Code Playgroud) 我已经设法让WIX在退出时启动我的应用程序,但不知道如何使用WixShellExecTarget属性安排两个自定义操作.
一个CA是启动应用程序,另一个是基于来自另一个CA的URL的网页.如果选中相应的复选框,则会启动这些选项.
<!-- Custom action for executing app -->
<Property Id="WixShellExecTarget" Value="[#Application.exe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<!-- Custom action for executing Webbrowser -->
<Property Id="???" Value="[CONFIGWIZARDURL]" />
<CustomAction Id="LaunchConfigWizard" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
Run Code Online (Sandbox Code Playgroud)
任何帮助你可以让我让这个工作将不胜感激.
干杯,杰米
[编辑]我已经尝试了下面的建议,但我没有为第二个动作设置合适的值.它没有像我建议的那样去www.google.com:
<Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="SetExec1"><![CDATA[NOT Installed]]></Publish>
<Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="DoExec"><![CDATA[LAUNCHCAPTURE = "1" AND NOT Installed]]></Publish>
<Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="SetExec2"><![CDATA[NOT Installed]]></Publish>
<Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="DoExec"><![CDATA[LAUNCHCONFIGWIZARD = "1" AND NOT Installed]]></Publish>
Property(S): LAUNCHCONFIGWIZARD = 1
MSI (s) (5C:DC) …Run Code Online (Sandbox Code Playgroud) 我正在PHP的shell_exec()中运行ffmpeg命令来转换列表中的多个视频.无论如何都要检测视频转换时是否发生了错误(或至少验证它是否完全完成了转换)?
如果发生错误,我不想停止转换其他视频,只是记录错误的能力.
<?php
shell_exec('ffmpeg -i downloads/flv/file1.flv -vcodec libvpx -acodec libvorbis downloads/webm/file1.webm');
if(error) {
//run a command here to report the error (ie. MySQL or email)
}
?>
Run Code Online (Sandbox Code Playgroud) 在编译脚本时,我遇到了命令do f=${file##*/}.我很想知道##这一行意味着什么.感谢您提前回复
当我vcgencmd measure_temp在终端中运行时,它会给出 CPU 的温度读数。
但是当我在 php 中使用相同的命令时,exec('vcgencmd measure_temp 2>&1')它在浏览器中出现以下错误:
VCHI 初始化失败
如何vcgencmd从php执行命令?