我正在尝试设置一个漂亮的HTML到图像插件wkhtmltopdf,我有一个非常困难的时间.
到目前为止我做了什么:
下载了wkhtmltopdf zip包并在我的网站根文件夹中打包了该文件
作为测试,我在index.php文件中包含以下代码,我希望将bbc.com网站的内容保存为我的网站根文件夹中的.jpg图像:
shell_exec('./ wkhtmltopdf --quality 50 http://www.bbc.com bbc.jpg');
似乎什么也没发生.PHP 没有在安全模式下运行,所以这不是问题.shell_exec正在执行,我能够使用它创建一个.txt文档.
我已经研究了好几天了,我向任何人提供了100个赏金,可以提出一个明确的,简化的逐步工作指南,介绍如何在Widows上设置wkhtmltopdf以使用PHP运行.
更具体地说,我正在寻找简化的演练如何:
设置wkhtmltopdf使用php在Windows上运行(包括常见问题的详细信息以及如何克服它们).
单击按钮或链接:将"当前"网页打印为pdf,包括所有填写的输入值(包括此部分的示例代码).具有更改页面内容的事件的网页应打印出当前版本的页面,而不是页面的初始状态.
创建.pdf创建的下载链接,onClick上面提到的创建和打印到pdf的相同功能(包括此部分的示例代码).
所以,我试图在我的Laravel 5.3中运行一个python脚本.
这个功能在我的Controller里面.这只是将数据传递给我的python脚本
public function imageSearch(Request $request) {
$queryImage = 'c:\\\xampp\\\htdocs\\\identificare_api\\\public\\\gallery\\\herbs\\\query.png'; //queryImage
$trainImage = 'c:\\\xampp\\\htdocs\\\identificare_api\\\public\\\gallery\\\herbs\\\2nd.png'; //trainImage
$trainImage1 = 'c:\\\xampp\\\htdocs\\\identificare_api\\\public\\\gallery\\\herbs\\\3rd.png';
$trainImage2 = 'c:\\\xampp\\\htdocs\\\identificare_api\\\public\\\gallery\\\herbs\\\4th.jpg';
$trainImage3 = 'c:\\\xampp\\\htdocs\\\identificare_api\\\public\\\gallery\\\herbs\\\1st.jpg';
$data = array
(
array(0, $queryImage),
array(1, $trainImage),
array(3, $trainImage1),
array(5, $trainImage2),
array(7, $trainImage3),
);
$count= count($data);
$a = 1;
$string = "";
foreach( $data as $d){
$string .= $d[0] . '-' . $d[1];
if($a < $count){
$string .= ",";
}
$a++;
}
$result = shell_exec("C:\Python27\python c:\xampp\htdocs\identificare_api\app\http\controllers\ORB\orb.py " . escapeshellarg($string));
echo $result;
}
Run Code Online (Sandbox Code Playgroud)
我的python脚本是一个ORB算法,它在将火车图像与查询图像进行比较后返回最小距离及其id.所以,这是我的python脚本:
import …Run Code Online (Sandbox Code Playgroud) 两者之间的主要区别是什么?我愿意从我的(C++)应用程序中只运行另一个EXE.继承环境,安全功能等时是否有任何差异?
我认为有很多类似的帖子,但我在搜索后还没有找到解决方案.
基本上,我正在尝试在后台运行两个脚本.当我在命令行中运行它们时,我在调用我的第一个脚本后看到:
/usr/bin/nohup php script.php > nohupoutput.log & echo $!
Run Code Online (Sandbox Code Playgroud)
我尝试 ...script.php > /dev/null &过同样的结果.我明白了:
/usr/bin/nohup: ignoring input and redirecting stderr to stdout
Run Code Online (Sandbox Code Playgroud)
我忽略并运行第二个.我注意到它似乎挂在那里,并按下Enter让我回到machine:~folder>
/usr/bin/nohup php script2.php > nohupoutput.log & echo $!
Run Code Online (Sandbox Code Playgroud)
两个脚本都有效.我试图将其转换为shell_exec命令,似乎没有任何工作.我怀疑这个ignoring input位造成了困难,但我不确定.无论如何,以下不起作用.它只是挂在浏览器中:
$output = shell_exec('/usr/bin/nohup php script.php > /dev/null &');
$output = shell_exec('/usr/bin/nohup php script2.php > /dev/null &');
Run Code Online (Sandbox Code Playgroud) 我有一个sample.php带有以下内容的php文件:
<?php
echo "Hello World!";
?>
Run Code Online (Sandbox Code Playgroud)
而我想要做的是使用第二个PHP脚本运行这个PHP脚本.
我认为shell_exec可以帮助我,但我不知道它的语法.
顺便说一句,我想用这个文件来执行cpanel.所以我必须执行shell.
有没有办法做到这一点?
我想用root_exec以root身份执行命令.现在我知道这很危险,但请相信我,您需要使用MOD_AUTH登录并拥有正确的权限来访问此页面.这很安全.我怎么能这样做?
我想创建一个php脚本来执行shell命令并返回其输出.服务器需要私钥.当我第一次决定测试时,我创建了这个:
<?php
$command = "ls";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>
Run Code Online (Sandbox Code Playgroud)
这很好用.但当我改变$command命令时,我真的想要运行:
$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";
Run Code Online (Sandbox Code Playgroud)
它给了我这个输出:
You need root privileges to run this script
Run Code Online (Sandbox Code Playgroud)
我的猜测是我需要使用sudo.当然,这需要将pem文件放在服务器上的某个位置.假设我这样做,究竟应该$command是什么?我应该使用shell_exec(),exec(),system()或其他什么东西?
在某些服务器上,不允许PHP通过shell_exec运行shell命令.如何检测当前服务器是否允许通过PHP运行shell命令?如何通过PHP启用shell命令执行?
我有一个PHP脚本,它在数据库中查询要完成的作业列表,并根据它在数据库中找到的内容(基本上是一个进程队列)触发其他PHP脚本.
队列运行程序脚本执行的某些脚本可能需要30秒左右才能完成运行(生成PDF,调整图像大小等).
问题是shell_exec()在队列中,runner脚本调用处理脚本,但是不等待它们完成,导致队列没有完成.
队列转轮脚本:
#!/usr/bin/php
<?php
// Loop through database and find jobs to be done
shell_exec(sprintf("/root/scripts/%s.php", $row['jobName']));
?>
Run Code Online (Sandbox Code Playgroud)
工作脚本:
#!/usr/bin/php
<?php
shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf");
// Update database to mark job as completed
?>
Run Code Online (Sandbox Code Playgroud)
直接从命令行运行作业脚本,并创建PDF.
有想法该怎么解决这个吗?或者更好的方法来运行进程队列?
如何使用php在命令行中正确执行命令?例如,我在命令行中使用以下命令将docx文件转换为pdf文件:
pdfcreator.exe /PF"D:\Documents\sample.docx
Run Code Online (Sandbox Code Playgroud)
现在使用PHP代码我希望能够执行相同的命令,但似乎没有发生任何事情:
<?php
shell_exec('pdfcreator.exe /PF"D:\Documents\sample.docx"');
?>
Run Code Online (Sandbox Code Playgroud)
这可能在PHP中吗?如果是,我该怎么办?