php - PHP 在按钮单击时执行 Python 脚本
问题描述
我正在使用 php 让按钮刷新 python 脚本。这样做的目的是在存在某个输入并按下按钮时运行 python 脚本。如果没有用户输入,则有一个默认值$input_val
,以防万一。我一直在尝试测试这一点的方式是在我的 python 文件中,我有一行应该输出到var/tmp/my_logfile.log
,但是通过 php 页面运行时没有返回任何日志。就像我看到的所有其他堆栈文章一样,它在命令提示符下工作。
我用来尝试的代码如下:
PHP:
if (isset($_POST['update']))
{
exec('/usr/bin/python3 /var/www/python_test.py ".$input_val."');
}
HTML:
<form name="update" method="post" >
<button name = "update" type="submit"> Update charts </button>
</form>
我使用过的一些参考资料,但没有运气:
用于运行 PHP 以执行 Python 脚本的 HTML 表单按钮
https://www.raspberrypi.org/forums/viewtopic.php?t=105932
https://serverfault.com/questions/679198/executing-a-python-script-through-php-button
解决方案
您不能将变量放在单引号字符串中,除非那是您真正想要的。相反,要么拆分并连接,要么使用双引号:
<?php exec('/usr/bin/python3 /var/www/python_test.py "' . $input_val . '"'); // note extra single quotes
或者:
<?php exec("/usr/bin/python3 /var/www/python_test.py \"$input_val\"");
上面的代码假定您实际上在终端中键入了双引号。
如果没有,只需像这样摆脱它们:
<?php exec('/usr/bin/python3 /var/www/python_test.py ' . $input_val );
或者:
<?php exec("/usr/bin/python3 /var/www/python_test.py $input_val");
推荐阅读
- powershell - 如何复制文件列表并在 PowerShell 循环中重命名它们
- ruby-on-rails - TinyMCE:Capybara::ElementNotFound:找不到可见框架“content_ifr”
- android - 使用 TextWatcher 时退格无法正常工作
- for-loop - 迭代并添加到 RxSwift 中的数组
- swift - 退出和重新登录时清除 ViewControllers 堆栈
- html - 列未正确拆分
- java - 使用空列表是否比在 java 中对列表进行空值检查更昂贵?
- r - if/else grepl "参数长度为零"
- c++ - 为什么字符串不会推入或弹出堆栈
- java - 我应该为读取语句使用哪个事务隔离级别?