Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP shell_exec()不工作,但命令从控制台工作

PHP shell_exec()不工作,但命令从控制台工作
EN

Stack Overflow用户
提问于 2018-01-18 15:10:11
回答 1查看 4.5K关注 0票数 4

我遵循本指南通过Git部署我的网站,并且在PHP ()或exec()方面遇到了一些问题。部署脚本运行多个命令,如gitwhoamiwhich gitrsync等。当我作为服务器用户登录时,所有这些命令都可以工作。

但是,当我按下运行这些命令的php脚本时,它们就不能工作了。whoami: command not found

git: command not found

rsync: command not found

which: command not found

我可以通过提供命令的路径来解决这个问题。( /usr/bin/whoami => myuser)但是有些命令(如/usr/bin/which rsync )仍然不能工作。(那个给了我/usr/bin/which: no rsync in (/bin))

这些对项目的工作并不重要,但我仍然想知道是否存在某种权限问题或我做错了什么事情。这里有人有洞察力吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 16:58:55

从外观上看,您的路径变量只包括/bin。这只允许您在该目录中运行可执行文件。有几种方法可以解决这个问题。

方法1:配置web服务器环境变量

如果您正在运行apache,您可以简单地编辑/etc/apache2/envvars以包含路径变量定义。编辑文件并向底部添加一个新行(如果它还不存在):

代码语言:javascript
运行
AI代码解释
复制
# /etc/apache2/envvars
...

export PATH="/bin:/usr/local/bin"

方法2:为用户配置路径

或者,如果您作为服务用户以外的用户运行web服务器,则该用户可能无法正确配置其路径。这就像为用户更改环境变量一样简单,web服务器将继承它(除非在web服务器的配置中另有定义)。

第一步是确定您的web服务器是以哪个用户的身份运行的。如果不知道,可以检查正在运行的进程以找到用户。这可以通过运行以下命令来实现:

ps aux|grep {webserver}|grep -v grep中,{webserver}被替换为当前正在运行的web服务器。(apache/httpd,nginx)

或者,您可以签入以下配置文件:

  • /etc/httpd/conf/httpd.conf - CentOS Apache
  • /etc/apache2/apache2.conf - Ubuntu/Debian
  • /etc/nginx/nginx.conf - nginx配置

(还有许多其他可能的配置,但这些配置是最常见的)

一旦您发现您正在以哪个用户的身份运行,您就需要为该用户设置路径变量。这可能就像导出其主bash配置中的路径一样简单。例如,这可能是/home/bob/.bashrc。但是,没有家的服务用户会有所不同。

方法3:在脚本中声明路径

您可以在PHP脚本中手动指定路径变量。这可以通过在脚本中添加以下行来实现:

代码语言:javascript
运行
AI代码解释
复制
<?php

putenv('PATH=/bin:/usr/local/bin');
...

您需要更改路径以满足您的需要,并且需要在调用shell_exec()之前对其进行声明。

这个方法不是首选的,因为您需要为每个使用shell_exec()调用/bin之外的二进制文件的PHP脚本指定这个方法,但这是一个快速的、有效的解决方案。

更重要的是,您正在编写不可移植的、依赖于特定系统的代码。这是糟糕的编码实践,不建议/不反对。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48331794

复制
相关文章
企业数字化营销,这个工作不“性感”但很重要
嘉宾|宋星 编辑|高玉娴 当我们购买某件商品,脑中闪现的不再是耳熟能详的电视广告台词,而是在社交平台上某位博主的疯狂“种草”;当我们进入某个电商平台,不再信奉卖家的一面之词,而是先把买家评价通览一遍——种种现象表明,消费者正在从商业信息的被动接收者,变成商业信息的主动创造者、承载者和传播者。 这意味着,海量的商业信息将铺天盖地而来,消费者的注意力经历前所未有的分散化、粉末化,忠诚度将持续降低。而企业营销模式,则不可避免地迎来巨大挑战。 为了破此局,越来越多的企业开始进行数字营销运营,通过打造私域,把分
深度学习与Python
2023/03/29
4180
企业数字化营销,这个工作不“性感”但很重要
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
7.4K0
PHP底层工作原理
深入探讨 等等,没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。
Java架构师必看
2021/03/22
1K0
PHP底层工作原理
PHP Opcache工作原理
在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。
猿哥
2019/11/10
1.7K0
linux工作命令总结
查看tomcat进程pid ps -ef|grep tomcat 统计该tomcat进程内的线程个数 ps -Lf 29295|wc -l 检查本机各端口的连接情况(tcp,udp等) netstat -anlp | grep 8003 取文件最后一列求平均值 awk '{a+=$NF;b++}END{print a,a/b}' access_log.2021-12-28.log awk '{max=$NF;b++}END{print}' 打印大于1000ms的记录 cat a
Vincent-yuan
2022/05/06
9340
PHP Opcache的工作原理
PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。
码农编程进阶笔记
2021/07/20
1.4K0
PHP Opcache的工作原理[通俗易懂]
PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。
全栈程序员站长
2022/07/11
1.1K0
PHP Opcache的工作原理[通俗易懂]
PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下:
全栈程序员站长
2022/07/08
2.2K0
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
14.3K0
RDP你的凭据不工作/RDP密码不刷新
Linux工作目录切换命令
1.pwd pwd命令用于显示用户当前所处的工作目录 格式:pwd[选项] [root@linuxprobe Desktop]# pwd /home/linuxprobe/Desktop 2.cd 用于切换工作路径 格式:cd[目录名称] cd- 命令返回到上一级所处的目录 cd.. 进入上一级目录 cd~ 命令切换到当前用户的家目录 [root@linuxprobe Desktop]# cd /etc [root@linuxprobe etc]# cd /bin [root@linuxprobe bin
心跳包
2020/08/28
8.1K0
Linux常用工作命令
1.echo 格式:echo [字符串|$变量] 例如: [root@linuxprobe Desktop]# echo my name is xintiaobao my name is xintiaobao [root@linuxprobe Desktop]# echo $SHELL /bin/bash 2.date 格式:[选项][+指定的格式] [root@linuxprobe Desktop]# date Fri May 25 19:54:42 WST 2018 [root@linuxprobe
心跳包
2020/08/28
5080
Linux命令(面试+工作版)
Linux命令(面试+工作版) 1. tar 创建一个新的tar文件 解压tar文件 查看tar文件 2. grep 在文件中查找字符串(不区分大小写) 输出成功匹配的行,以及该行之后的三行 在一个文
Java帮帮
2018/03/15
3.4K0
Linux命令(面试+工作版)
mongo中命令工作原理
runCommand命令是mongo的执行命令,可以执行mongo的任何命令,其它命令比如Drop,Count命令则是runCommand的简写形式,runCommand命令执行完成后有详细的相应结果。
莫问今朝
2019/02/25
4930
工作常用的Git命令
我每天使用 Git ,但是很多命令记不住。 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。
幻影龙王
2021/09/11
5230
工作常用的Git命令
从数据竞赛到工作!
数据科学结合了诸多领域中的理论和技术,主要包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助人们理解问题。
算法进阶
2022/06/02
2440
从数据竞赛到工作!
php执行系统外部命令函数:exec()、passthru()、system()、 shell_exec()
php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()
Yiiven
2022/12/15
1.3K0
sed命令工作原理及命令备忘
sed是一个非交互式的流编辑器(stream editor)。所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出;而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然后对该行进行指定的处理,并将结果输出到屏幕(除非取消了屏幕输出又没有显式地使用打印命令),接着读入下一行。整个文件像流水一样被逐行处理然后逐行输出。 工作中经常会使用sed命令对文件进行各种操作,之前一直对它的工作原理不是很了解,只不过在网上抄一些命令完成操作,有时遇到了问题,就问一问身边的“脚本小王
jeremyxu
2018/05/10
1.1K0
brew 安装 nginx 配合PHP工作
一、location /: 因为所有的请求都是以/开头的,所以下面的配置相当于匹配任意的URL
很酷的站长
2022/12/28
7160
brew 安装 nginx 配合PHP工作
nginx+php-fpm工作原理
官方手册:FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。 它的功能包括:
猿哥
2020/03/12
2K0
128 天不上班不工作:照样领工资 9.5 万
原告:北京和风畅想科技有限公司 被告:杜某,男,1988年出生 和风畅想公司向法院提出诉讼请求: 1、判决无须撤销《解除劳动关系通知书》,双方无需继续履行劳动合同; 2、判决和风畅想公司无须向杜某支付自2020年2月29日至2020年7月5日期间工资收入损失95172.41元。 事实和理由: 2020年11月2日,和风畅想公司收到北京市朝阳区劳动人事争议仲裁委员会作出的京朝劳人仲字[2020]第16281号裁决书(以下简称“第16281号裁决书”),和风畅想公司不服该裁决。 不服裁决理由: 一、第1628
云头条
2022/10/09
3.3K0
128 天不上班不工作:照样领工资  9.5 万

相似问题

PHP shell_exec不工作

31

命令在控制台中工作,但Cronjob不工作。

20

PHP Shell_Exec不工作?

22

PHP Exec不工作,但命令本身工作正常

20

php和shell_exec不工作

38
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档