PHP 执行 shell 命令

这两天用 PHP 做了一个后台,想调用 shell 命令来实现自动代码打包,遇到了 shell 命令执行没反应的问题。

后来在命令行下用 php 来执行,居然能正常工作,故而判断是权限配置的问题。

一、查看当前是哪个用户在运行 PHP

两种办法:

1、PHP 代码

<pre>
<?php
echo shell_exec("id -a");
</pre>

2、shell 命令 lsof -:80

<pre>
[root@localhost dev_host]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 27556 root 6u IPv4 1135157 0t0 TCP *:http (LISTEN)
nginx 27558 apache 6u IPv4 1135157 0t0 TCP *:http (LISTEN)
</pre>

这俩的结果都能看出来当前用户是 apache

二、添加用户 apache,并赋予 sudo 权限

vi /etc/sudoers,添加

<pre>root ALL=(ALL) ALL
apache ALL=(ALL) NOPASSWD:ALL</pre>

并将如下这行注释掉,表示不需要控制终端:

<pre># Defaults requiretty</pre>

增加行 Defaults visiblepw,否则会出现 sudo: no tty present and no askpass program specified

最后使用 :w! 保存

三、执行命令的时候,一定要在命令最前面加上 sudo

不然会遇到调用命令,返回错误码 127 的情况。正确的姿势是:
<pre>sudo sh testshell</pre>

参考资料:

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容