- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是树莓派的菜鸟。我已完成所有设置,我正在尝试使用 shell_exec
通过浏览器运行文件。
这是python文件的内容:
#! /usr/bin/python
import time
import RPi.GPIO as GPIO
PIN_17 = 17 # Define LED colour and their GPIO pin
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN_17, GPIO.OUT) # Setup GPIO pin
GPIO.output(PIN_17, True) #Turn on
time.sleep (1) #Wait
GPIO.output(PIN_17, False) #Turn off
GPIO.cleanup() #Useful to clear the board
我在目录 /home/pi/
中有一个名为 trigger_pin.py
的文件
我正在尝试使用下面 remote.php
中的 PHP 命令通过浏览器运行该文件:
<?php
$output = shell_exec("cd /home/pi/ && ./trigger_pin.py 2>&1"); //run command
echo "$output"; //output from command
?>
我得到的输出是:
Traceback (most recent call last): File "./trigger_pin.py", line 9, in GPIO.setup(PIN_17, GPIO.OUT) # Setup GPIO pin RuntimeError: No access to /dev/mem. Try running as root!
最佳答案
默认情况下,Raspberry Pi 的 GPIO 接口(interface)需要 super 用户(“root”)权限。您可能打开了一个 root 用户 shell,因此执行您的 Python 脚本不会出现命令行问题。然而,您的 PHP 应用程序服务器可能以另一个用户身份运行。
最直接的解决方案是将 PHP 应用程序服务器的用户(例如,www-data
)添加到 /etc/sudoers
,这将创建一个特权用户.
www-data ALL = NOPASSWD: ALL
然后使用 sudo
升级您的权限:
shell_exec("cd /home/pi/ && sudo ./trigger_pin.py 2>&1");
如果您这样做,请绝对确定您验证了您的 Web 服务器可以执行的内容的安全性(即,不要通过查看源代码盲目安装 Web 脚本)。
或者,您可以重构 Python 脚本以使用 pigpio的 pigpiod
守护进程,它以 super 用户权限运行(因此您的应用程序不必这样做)。或者您可以使用一个单独的工具,它使用 setuid
以 root 身份运行,例如 Quick2Wire 的 GPIO Admin .
您还可以在 Raspberry Pi Stack Exchange 找到更多帮助.
关于php - 无法访问/dev/mem。尝试在 Raspberry Pi 上以 root 身份运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27864804/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
PowerShell Web Access 允许您通过 Web 浏览器运行 PowerShell cmdlet。它显示了一个基于 Web 的控制台窗口。 有没有办法运行 cmdlet 而无需在控制台窗
我尝试在无需用户登录的情况下访问 Sharepoint 文件。 我可以通过以下任一方式获取访问 token 方法一: var client = new RestClient("https://logi
我目前正在尝试通过 Chrome 扩展程序访问 Google 服务。我的理解是,对于 JS 应用程序,Google 首选的身份验证机制是 OAuth。我的应用目前已成功通过 OAuth 向服务进行身份
假设我有纯抽象类 IHandler 和派生自它的类: class IHandler { public: virtual int process_input(char input) = 0; };
我有一个带有 ThymeLeaf 和 Dojo 的 Spring 应用程序,这给我带来了问题。当我从我的 HTML 文件中引用 CSS 文件时,它们在 Firebug 中显示为中止。但是,当我通过在地
这个问题已经有答案了: JavaScript property access: dot notation vs. brackets? (17 个回答) 已关闭 6 年前。 为什么这不起作用? func
我想将所有流量重定向到 https,只有 robot.txt 应该可以通过 http 访问。 是否可以为 robot.txt 文件创建异常(exception)? 我的 .htaccess 文件: R
我遇到了 LinkedIn OAuth2: "Unable to verify access token" 中描述的相同问题;但是,那里描述的解决方案并不能解决我的问题。 我能够成功请求访问 toke
问题 我有一个暴露给 *:8080 的 Docker 服务容器. 我无法通过 localhost:8080 访问容器. Chrome /curl无限期挂断。 但是如果我使用任何其他本地IP,我就可以访
我正在使用 Google 的 Oauth 2.0 来获取用户的 access_token,但我不知道如何将它与 imaplib 一起使用来访问收件箱。 最佳答案 下面是带有 oauth 2.0 的 I
我正在做 docker 入门指南:https://docs.docker.com/get-started/part3/#recap-and-cheat-sheet-optional docker-co
我正在尝试使用静态 IP 在 AKS 上创建一个 Web 应用程序,自然找到了一个带有 Nginx ingress controller in Azure's documentation 的解决方案。
这是我在名为 foo.js 的文件中的代码。 console.log('module.exports:', module.exports) console.log('module.id:', modu
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用 MGTwitterEngine"将 twitter 集成到我的应用程序中。它在 iOS 4.2 上运行良好。当我尝试从任何 iOS 5 设备访问 twitter 时,我遇到了身份验证 to
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用以下 API 列出我的 Facebook 好友。 https://graph.facebook.com/me/friends?access_token= ??? 我想知道访问 token 过
401 Unauthorized - Show headers - { "error": { "errors": [ { "domain": "global", "reas
我已经将我的 django 应用程序部署到 heroku 并使用 Amazon s3 存储桶存储静态文件,我发现从 s3 存储桶到 heroku 获取数据没有问题。但是,当我测试查看内容存储位置时,除
我是一名优秀的程序员,十分优秀!