从PHP shell_exec启动时,Bash脚本具有不同的行为

时间:2014-01-24 18:11:38

标签: php bash

script.sh

cd ~/scripts
acname=$(cat acname.txt)
days=$(cat days.txt)
nbmessages=`ls -l message_*.txt | wc -l`
today=`date +%Y%m%d`
#
echo $acname >> ./log.txt
echo $days >> ./log.txt
echo $nbmessages >> ./log.txt
echo $today >> ./log.txt

如果我在shell提示符下运行script.sh,则log.txt显示:

alex8
4
5
20140124

这是正确的

如果我在PHP中使用shell_exec函数运行script.sh,log.txt显示:

log.txt: 


0
20140124

因此,获取文件的内容不起作用,也不计算具有特定模式的文件(当它应为5时为0),而date命令仍然有效。 任何的想法 ? 非常感谢提前!

1 个答案:

答案 0 :(得分:0)

~/scripts转到您家庭目录的脚本子目录。这可能与运行php的Web服务器进程的主目录不同。

通常,使用完整路径可以帮助缓解此类问题,但您仍然需要应对确保Web服务器进程拥有相关文件的权限。