从外壳程序运行时,Linux“ at”命令工作正常,但从Web服务器运行时,Linux命令失败

Eth*_*han 5 php linux apache bash shell

我正在使用“ at”来设置用户在RHEL6.4上设置的未来操作。我从php使用的命令是

exec("echo \"php $script_path\" | at $run_time");
Run Code Online (Sandbox Code Playgroud)

已将脚本路径设置为运行时间的位置。当我从以php -a初始化的shell运行时,此方法可以100%正常运行。从Web服务器运行该作业时,该作业已创建,但似乎没有运行。

  1. 我已验证:apache用户对目录及其中的所有文件夹具有完全的读写执行权限。

  2. exec命令正在运行(毕竟创建了at作业。)

  3. 我已验证工作正在服务器上寻找正确的路径。

我不确定我还能怎么做才能在命令中正确地运行脚本。有什么建议么?

谢谢您的帮助。


更新:我继续创建了一个页面,该页面链接到我尝试自动运行的脚本,并以此方式启动了它。以这种方式以apache方式运行时,脚本本身可以正常工作,这意味着它肯定是“ at”正在做的事情。我运行了print_r($ _ ENV)以确定正在使用的环境变量。唯一显示的是数字1。


更新2:我在每个作业上运行了-c,一个似乎从未运行过,并且运行正常。可以运作的内容与无法运作的内容相比,似乎有更多的内容。65工作(从壳跑)

at -c 65
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
HOSTNAME=ipdb-sys.ipdb.lab; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=143.166.167.124\ 53008\ 22; export SSH_CLIENT
QTDIR=/usr/lib64/qt-3.3; export QTDIR
QTINC=/usr/lib64/qt-3.3/include; export QTINC
SSH_TTY=/dev/pts/0; export SSH_TTY
USER=root; export USER
LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:mi=01\;05\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lz=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.bz=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.rar=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.axv=01\;35:\*.anx=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.axa=01\;36:\*.oga=01\;36:\*.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
WEBROOT=/var/www; export WEBROOT
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/sbin:/root/bin; export PATH
PWD=/root; export PWD
LANG=en_US.UTF-8; export LANG
MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles; export MODULEPATH
LOADEDMODULES=; export LOADEDMODULES
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
QTLIB=/usr/lib64/qt-3.3/lib; export QTLIB
CVS_RSH=ssh; export CVS_RSH
SSH_CONNECTION=143.166.167.124\ 53008\ 10.180.57.93\ 22; export SSH_CONNECTION
MODULESHOME=/usr/share/Modules; export MODULESHOME
LESSOPEN=\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
G_BROKEN_FILENAMES=1; export G_BROKEN_FILENAMES
module=\(\)\ {\ \ eval\ \`/usr/bin/modulecmd\ bash\ \$\*\`"
"}; export module
cd /root || {
         echo 'Execution directory inaccessible' >&2
         exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER145f56ce'
php /var/www/ipdb5.0/unattend/release.php

marcinDELIMITER145f56ce
Run Code Online (Sandbox Code Playgroud)

工作68没有。

at -c 68
#!/bin/sh
# atrun uid=48 gid=48
# mail apache 1
umask 22
PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
RUNLEVEL=3; export RUNLEVEL
runlevel=3; export runlevel
PWD=/var/www/ipdb5.0/run; export PWD
LANGSH_SOURCED=1; export LANGSH_SOURCED
LANG=C; export LANG
PREVLEVEL=N; export PREVLEVEL
previous=N; export previous
CONSOLETYPE=vt; export CONSOLETYPE
SHLVL=4; export SHLVL
UPSTART_INSTANCE=; export UPSTART_INSTANCE
UPSTART_EVENTS=runlevel; export UPSTART_EVENTS
UPSTART_JOB=rc; export UPSTART_JOB
cd /var/www/ipdb5\.0/run || {
         echo 'Execution directory inaccessible' >&2
         exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER348f4254'
php /usr/bin/php /var/www/ipdb5.0/unattend/release.php

marcinDELIMITER348f4254
Run Code Online (Sandbox Code Playgroud)

不知道你们是否能从我身上得到更多的收获,但是我认为发布以查看它不会受到伤害。