无法访问 /dev/mem。尝试在 Raspberry Pi 上以 root 身份运行

2024-01-09

我是一个树莓派菜鸟。我已经完成所有设置,我正在尝试使用浏览器通过浏览器运行文件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/ called trigger_pin.py

我正在尝试使用下面的 PHP 命令通过浏览器运行该文件remote.php:

<?php
$output = shell_exec("cd /home/pi/ && ./trigger_pin.py 2>&1"); //run command
echo "$output"; //output from command
?>

我得到的输出是:

回溯(最近一次调用最后一次):文件“./trigger_pin.py”,第 9 行,在 GPIO.setup(PIN_17, GPIO.OUT) # 设置 GPIO 引脚运行时错误:无法访问 /dev/mem。尝试以 root 身份运行!


默认情况下,Raspberry Pi 的 GPIO 接口需要超级用户(“root”)权限。您可能打开了 root 用户 shell,因此从命令行执行 Python 脚本不会出现问题。然而,您的 PHP 应用程序服务器可能以另一个用户身份运行。

最直接的解决方案是添加 PHP 应用程序服务器的用户(例如,www-data) to /etc/sudoers,这将创建一个特权用户。

www-data  ALL = NOPASSWD: ALL

然后升级您的权限sudo:

shell_exec("cd /home/pi/ && sudo ./trigger_pin.py 2>&1");

如果您这样做,请绝对确定您验证了 Web 服务器可以执行的内容的安全性(即,不要在检查源代码的情况下盲目安装 Web 脚本)。

或者,您可以重构 Python 脚本以使用pigpio http://abyz.co.uk/rpi/pigpio/'s pigpiod守护进程,它以超级用户权限运行(因此您的应用程序不必这样做)。或者您可以使用一个单独的工具来使用setuid以 root 身份运行,例如 Quick2WireGPIO 管理 https://github.com/quick2wire/quick2wire-gpio-admin.

您还可以在以下位置找到更多帮助Raspberry Pi 堆栈交换 http://raspberrypi.stackexchange.com.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法访问 /dev/mem。尝试在 Raspberry Pi 上以 root 身份运行 的相关文章

  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • 在linux上安装python ssl模块,无需重新编译

    是否可以在已经安装了 OpenSSL 的 Linux 机器上安装 python 的 SSL 模块 而无需重新编译 python 我希望它就像复制几个文件并将它们包含在库路径中一样简单 Python版本是2 4 3 谢谢 是否可以在已经安装了
  • Paypal 将钱从一个帐户转移到另一个帐户

    我知道这个建议如何汇款至任何 PayPal 账户 https stackoverflow com questions 1559808 paypal api send money to any paypal account但到目前为止我所尝试
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • Python - Unicode 到 ASCII 的转换

    我无法在不丢失数据的情况下将以下 Unicode 转换为 ASCII u ABRA xc3O JOS xc9 I tried encode and decode他们不会这么做 有人有建议吗 Unicode 字符u xce0 and u xc
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • 查找与另一列 Pandas 中的唯一值关联的列中的值的交集

    如果我有一个像这样的数据框 非常小的例子 col1 col2 0 a 1 1 a 2 2 b 1 3 b 2 4 b 4 5 c 1 6 c 2 7 c 3 我想要所有的交集col2当价值观与其独特性相关时col1值 因此在这种情况下 交集
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • PHP 中的encodeURI() ?

    PHP 中是否有一些不编码的encodeURI 函数 我现在用这个 function encodeURI url http php net manual en function rawurlencode php https develope
  • 从 wxPython 事件处理程序中调用函数

    我正在努力寻找一种在 wxPython 事件处理函数中使用函数的方法 假设我有一个按钮 单击该按钮时 它会使用事件处理程序运行一个名为 OnRun 的函数 但是 用户忘记单击 OnRun 按钮之前的 RadionButton 我想弹出一个
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • pandas.read_fwf 忽略提供的数据类型

    我正在从文本文件导入数据框 我想指定列的数据类型 但 pandas 似乎忽略了dtype input 一个工作示例 from io import StringIO import pandas as pd string USAF WBAN S
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 如何使用 Python/Django 在 Facebook 中获取(和使用)扩展权限

    我正在尝试编写一个简单的应用程序 让用户授予我的代码写入其页面的 Facebook 流的权限 据我了解 它应该很简单 让用户单击一个按钮 启动一个弹出窗口 其中包含我的 Facebook 应用程序中的页面 在该页面中 他们单击授予的内容流发
  • 通过 Sparkpost 发送 iCal 邀请

    我正在尝试使用 SparkPost 通过电子邮件以附件形式发送日历邀请 但收到电子邮件后邀请不会打开 我使用两个文件 calendarinvite php 来创建邀请 使用 Sendemail php 来发送电子邮件 calendarinv
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import

随机推荐

  • Laravel 4 - 读取配置文件

    如何从 laravel 读取配置文件 例如数据库连接 app config database php 我想要来自配置的 mysql 数据 对于一个包 你可以这样做 return Config get package group option
  • 如何防止GDB单步执行每一个函数

    我的 GDB 调试器会自动进入大多数函数 特别是我的外部库 标准库 这很烦人 因为我知道这些库比我的代码写得更好 如何才能阻止 GDB 这样做呢 有两种方法可以得到你想要的东西 一是使用next而不是step step将进入函数调用 但是n
  • Three.js计算充满屏幕所需的物体距离

    我见过很多关于如何缩放相机以使物体充满屏幕的问题 但我正在尝试移动物体以充满屏幕 我一直在尝试使用原始照片像素大小进行类似的操作 并且这些对象已缩放 var dist object originalSize height gt window
  • Arquillian:添加 beans.xml 会导致“ArquillianServletRunner 未找到”

    我正在使用 Arquillian 1 在 Eclipse 2 IDE 内的嵌入式 glassfish 环境中测试我的 J2EE App package test java import org jboss arquillian contai
  • hadoop中的全局变量

    我的程序遵循迭代映射 归约方法 如果满足某些条件 则需要停止 无论如何 我是否可以设置一个可以分布在所有映射 归约任务中的全局变量 并检查全局变量是否达到完成条件 像这样的东西 While Condition true Configurat
  • 在特定时间启动和停止视频 Windows Media Player

    我正在使用 Windows Media Player 对象在我的 C winforms 项目中播放视频 VideoPlayer URL C test avi 我的 test avi 持续时间是 12 秒 我想播放 4 到 8 秒 我可以从
  • 如何将admob广告添加到Xamarin IOS

    我正在尝试将 Admob 广告添加到 Xamarin IOS 但我无法找到实现此目标的方法 我已经搜索过互联网 但找不到解决方案 Google Admob 可在 Xamarin iOS 中使用 1 安装包Xamarin Firebase i
  • 在我的服务器上运行 node.js 脚本需要什么?

    我有一个标准的 Apache 服务器 我需要什么特殊的东西才能在服务器端运行 node js 脚本 http socket io 吗 Node js 提供了自己的 HTTP 服务器 因此不需要 Apache 如果您希望在同一台服务器上运行
  • 访问其他类变量

    我正在开发乒乓球游戏 因为我是编程新手 所以我不知道如何访问另一个类变量 我有单独的班级 绿色和蓝色的球拍 一个球和游戏 1 cs 我用 bool movingUp movingLeft 控制球的运动 它从屏幕边框反弹 但我不知道如何让它与
  • 在 Xcode 控制台中查看 Unicode 字符?

    当我这样做时 我需要在 Xcode 控制台中看到一些带有 Unicode 字符的字符串NSLog some unicode characters Eg abc u0001xyz u0002pqr 但是 Xcode 控制台只显示abcxyzp
  • 无法使用 Ansible 获取 .bashrc

    我可以 ssh 到远程主机并执行source home username bashrc 一切正常 但是如果我这样做 name source bashrc sudo no action command source home username
  • 无法在 iPhone 上安装配置文件(iOS 8 beta 4 / Xcode 6 Beta 4)

    我无法在 OS X Yosemite dev Preview 4 上运行 iOS beta 4 和 Xcode beta 4 的 iPhone 5S 上安装任何 iOS 开发者发行版或开发者链接的配置文件 我已经通过恢复重新安装了 iOS
  • 旋转 Pandas DataFrame 的列名称

    我正在尝试用 pandas 制作格式良好的表格 我的一些专栏名称太长了 这些列的单元格很大 导致整个表格混乱 在我的示例中 是否可以在显示时旋转列名称 data Way too long of a column to be reasonab
  • 将日期时间与未指定和 UTC 类型进行比较

    我有2个DateTime values date1 date2 比较这 2 个日期时 这 2 个日期相等 if DateTime Compare date1 date2 0 有人可以解释为什么吗 对我来说有点奇怪 当将 date1 未指定类
  • 我应该为 JavaScript 链接使用哪个“href”值,“#”还是“javascript:void(0)”?

    以下是构建仅用于运行 JavaScript 代码的链接的两种方法 就功能 页面加载速度 验证目的等而言 哪个更好 function myJsFunc alert myJsFunc a href Run JavaScript Code a o
  • jquery滚动,当页面滚动时更改导航活动类,相对于部分

    http jsfiddle net motocomdigital gUWdJ http jsfiddle net motocomdigital gUWdJ 我正在寻找 jquery 滚动技术 我想适应我的项目 请在此处查看我的项目示例作为小
  • 跨平台桌面应用程序

    我想开发一个跨平台应用程序 我不确定哪个最适合桌面应用程序 微软银光 土坯空气 爪哇 不想这样做 火狐浏览器插件 有很多选项可供您使用 但您的选择可能取决于桌面应用程序的复杂程度 Medium to high level complixit
  • 其中(向量 1 < 向量 2)

    让我们先举一个在 R 中计算的小例子 x lt c 1 3 1 4 2 max which x lt 2 1 3 现在 我不仅想对一个值 2 执行此操作 而且还想同时对多个值执行此操作 它应该给我类似的东西 max which x
  • 我可以将泛型属性存储到对象的字段中吗

    假设有以下类存根 public class Foo
  • 无法访问 /dev/mem。尝试在 Raspberry Pi 上以 root 身份运行

    我是一个树莓派菜鸟 我已经完成所有设置 我正在尝试使用浏览器通过浏览器运行文件shell exec 这是 python 文件的内容 usr bin python import time import RPi GPIO as GPIO PIN