1、问题和原因

        树莓派上的PHP主页无法运行具有root权限的命令或脚本原因,并不是PHP无法执行,而是Apache的权限不够!!!!


2、PHP运行shell脚本或Python的方法

       php给我们提供了system(),exec(),passthru()这三个函数来调用外部的命令.
       虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:

       system() 输出并返回最后一行shell结果。
       exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
       passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
       相同点:都可以获得命令执行的状态码
       例子:system("/usr/local/bin/webalizer/webalizer");


3、PHP通过sudo执行root命令或脚本

       1)开放sudo命令针对Apache用户的权限即可。

       修改sudo的权限控制文件 /etc/sudoers 文件,树莓派使用如下命令:

             sudo nano /etc/sudoers        或 也可以通过如下命令编辑/etc/sudoers文件: sudo visudo

       添加如下一行内容:开放此用户的所有权限

             www-data ALL=(ALL) NOPASSWD: ALL#我的Apache的用户是www-data

       或   nobody ALL=(ALL) NOPASSWD: ALL #如果你的Apache的用户是默认的,那么用户就是nobody

       也可以添加如下内容,开放某个命令的权限:

             nobody ALL=(ALL) NOPASSWD: /usr/local/apache/bin/apachect1 restart 

       2)注释掉文件中的Defaults requiretty这一行,否则会出现

             sudo: sorry,you must have a tty to run sudo.

       3)存盘退出

GitHub 加速计划 / li / linux-dash
13
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐