php中用exec调用命令ls命令成功,但调用php -v命令执行失败

baoer1024 发布于 2011/12/06 10:51
阅读 4K+
收藏 0

最近在调一个网站的bug,网站的框架是Zend Framework,lamp环境。view里面需要用exec执行脚本,脚本是一个php文件,且需要命令行参数,调用方式如下:

exec("php xxx.php param1 param2");

调试后发现exec命令可以执行,exec("ls", $out)可以正常执行,exec("php -v")不能执行。问题可能是apache用户不具有执行php命令的权限。怎样才能让它可以执行php命令呢,大家帮忙解答下啊,不胜感激。

加载中
0
雷志伟
雷志伟
看看日志, 是没有执行权限, 还是找不到 php 命令
0
t
toby3582

看看你的apache log 今天遇到这个问题 虽然看到回答时间是2011-12-06 11:15  但是却没有个详细的回答。所以我决定回答哈 不管楼主知道不知道,希望后来者能够能解决

出现的问题 我是基于window的 配置了php path后 在dos环境下去执行php文件都能行(这里目录应该这样写 如:D:\\test),但是在网页端利用 exec system shell_exec等执行同样的命令却是错误 解决半天过后才明白 apache不管window path 也就是php.exe文件所在路径没找到。于是在文件下面找才行所以

exec("php.exe路径 php文件路径 参数")就行了

0
edin2012
edin2012

ln -s /usr/bin/php 你的php路径   这样应该就行了

感觉还是环境变量的问题,从网页访问的时候,nginx的用户是www,这个用户貌似使用不到你新增的/usr/local/php/bin/php这个path,还是会从/usr/bin/这些老的path里面去找php程序。从命令行运行的时候用户是root,可以用到你新增的PATH.具体我也不清楚,反正我做了测试发现了这个现象。

返回顶部
顶部