博客
关于我
php - 执行Linux命令没有报错但也没有输出
阅读量:740 次
发布时间:2019-03-22

本文共 595 字,大约阅读时间需要 1 分钟。

今天,我需要在同事访问我的PHP页面时执行一段Python脚本。这让我思考了一个常见的问题:如何在网站环境中安全且有效地执行外部脚本。以下是我的解决过程和经验总结。

问题描述

我的代码如下:

运行后,只输出“run”,但没有任何其他结果。猜测是权限问题,检查了相关目录和文件权限,但问题依旧存在。于是,我尝试直接在命令行执行:

su -c "/usr/bin/python /data/script/abc/run.py" www

命令行也没有任何输出。这意味着权限问题可能出在PHP解析器的用户上。

探索与验证

查看用户信息:

cat /etc/passwd

结果显示:

www:x:30:8:WWW daemon apache:/var/lib/www:/bin/false

发现/bin/false说明www用户没有shell权限,无法执行命令。这意味着需要为www用户分配一个shell环境。

解决方法

www用户分配shell:

usermod -s /bin/bash www

此后,脚本运行正常,输出期望结果。通过此次经历,我学会了在网站环境中处理权限问题的重要性。

总结

在PHP中调用外部脚本时,权限问题是最常见的挑战之一。通过逐步排查和验证,找到了问题根源,并成功解决。建议开发者在设计脚本时,尽量避免直接在Web环境中执行shell命令,选择更安全的解决方案。

转载地址:http://tfywk.baihongyu.com/

你可能感兴趣的文章
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>
Node-RED中Button按钮组件和TextInput文字输入组件的使用
查看>>
vue3+Ts 项目打包时报错 ‘reactive‘is declared but its value is never read.及解决方法
查看>>
Node-RED中Slider滑杆和Numeric数值输入组件的使用
查看>>
Node-RED中Switch开关和Dropdown选择组件的使用
查看>>
Node-RED中使用exec节点实现调用外部exe程序
查看>>
Node-RED中使用function函式节点实现数值计算(相加计算)
查看>>
Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
查看>>
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>