php exec crontab无法正常工作 [英] php exec crontab not working

查看:72
本文介绍了php exec crontab无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在本地CentOS 5.3服务器上尝试从apache网络服务器执行以下php代码行

I trying on my local CentOS 5.3 server, when I try to execute below line in my php code from apache webserver


exec("crontab -l", $output, $arg);  
The $arg reply 127  (command not found code)

然后我更改了以下代码


exec("/usr/bin/crontab -l", $output, $arg); 
The $arg reply 126  (Permission problem code)

这是我当前的许可/usr/bin/crontab -rwsr-sr-x 1根root 311288 2007年3月15日/usr/bin/crontab.
而且没有/etc/cron.allow和/etc/cron.deny文件.

Here is my current permission of /usr/bin/crontab -rwsr-sr-x 1 root root 311288 Mar 15 2007 /usr/bin/crontab.
And there is no /etc/cron.allow and /etc/cron.deny file.

我已经在php中关闭了 Safe_mode .有解决这个问题的建议吗?

I already turned off Safe_mode in php. Any suggestion to solve this problem?

////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////

我注意到我的问题与selinux有关.当我禁用selinux时,它可以正常工作

I note that my problem is related to selinux. It is working, when I disable selinux

echo 0>/selinux/enforce

echo 0 > /selinux/enforce

但是我不想禁用selinux,selinux中是否有任何选项允许来自Apache的crontab?

But I don't want to disable selinux, is there any option in selinux to allow crontab from apache?

推荐答案

  1. 将/usr/bin添加到您的外壳环境路径中
  2. 将crontab添加到与网络服务器相同的组中
  3. 尝试在php exec("echo $ PATH")中查看路径变量.您还可以查找unsetenv并暂时将其禁用

您可以在php错误日志中查找错误的详细说明,但是正如您所说的,您对Linux熟悉,所以我无法教您有关用户权限管理的知识.关于env变量和path变量的说明,不一定总是在运行程序时导出env变量.您的问题可能就是这种情况.这意味着os损坏了,或者您必须将env变量手动附加到程序中.一种解决方法是查看外壳程序在哪里寻找程序,并对该程序进行符号链接.在您的错误日志中,crontab似乎位于文件夹/usr/bin中.同样,这似乎也不是编程问题.在server.stackexchange处询问为什么找不到crontab.例如,我的环境看起来像这样:

You can look in the php error log for a detailed description of the error but as you said you are familiar with Linux I can't teach you about user right management. A note to the env variable and the path variable it's not always sure the env variable get exported when you run a program. This is maybe the case with your problem. It means either the os is broken or you have to attach the env variable manually to your program. A workaround can be to look where the shell is looking for programs and symlink the program. In your error log it seems that crontab is in the folder /usr/bin. Also this seems not to be a programming question. Ask at server.stackexchange why crontab isn't found. For example my env looks like this:

LC_PAPER = de_DELC_ADDRESS = de_DELC_MONETARY = de_DEAF_PIDDIR =/tmp/af-piddirUPNP_ROOT = upnpav://SHELL =/bin/shTERM = xtermDISABLE_GATEWAY = 1GTK2_RC_FILES =/etc/hildon/theme/gtk-2.0/gtkrcTMPDIR =/var/tmpMMC_SWAP_LOCATION =/media/mmc1LC_NUMERIC = de_DEMMC_MOUNTPOINT =/media/mmc1OLDPWD =/根HILDON_FM_OBEX_ROOT = obex://LAUNCHWRAPPER_NICE_KILL =/etc/osso-af-init/nice-kill-launch-wrapper.shINTERNAL_MMC_MOUNTPOINT =/home/user/MyDocsOSSO_VERSION = RX-51_2009SE_20.2010.36-2_PR_MR0USER =根LS_COLORS =否= 00:fi = 00:di = 00; 36:ln = 00; 35:pi = 40; 33:so = 01; 35:bd = 40; 32; 00:cd = 40; 32; 00:或= 01; 05; 37; 41:mi = 01; 05; 37; 41:ex = 00; 33: .cmd = 00; 32: .exe = 00; 32:.com = 00; 32: .btm = 00; 32: .bat = 00; 32: .sh = 00; 32: .csh = 00; 32:.tar=00;31:.tgz=00;31:.arj=00;31:.taz=00;31:.lzh=00;31: .zip = 00; 31: .z = 00; 31: .Z = 00; 31: .gz = 00; 31: .bz2 =00; 31: .bz = 00; 31: .tz = 00; 31: .rpm = 00; 31: .cpio = 00; 31:.jpg = 00; 35: .gif = 00; 35: .bmp = 00; 35: .xbm = 00; 35: .xpm = 00; 35: .png = 00; 35: .tif = 00; 35:LC_TELEPHONE = de_DESESSION_BUS_PID_FILE =/tmp/dbus_session_bus.pid.userOSSO_PRODUCT_HARDWARE = RX-51STATESAVEDIR =/tmp/osso-appl-statesLAUNCHWRAPPER_NICE_TRYRESTART =/etc/osso-af-init/nice-launch-wrapper-tryrestart.shOSSO_PRODUCT_FULL_NAME =诺基亚N900OSSO_PRODUCT_RELEASE_FULL_NAME = Maemo 5OSSO_PRODUCT_RELEASE_NAME =备忘录5MYDOCSDIR =/家庭/用户/MyDocs路径=/usr/bin/gnu:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbinLC_MESSAGES = de_DEOSSO_PRODUCT_SHORT_NAME =诺基亚N900SESSION_BUS_ADDRESS_FILE =/tmp/session_bus_address.userLC_IDENTIFICATION = de_DEPWD =/家庭/用户/MyDocs编辑器=/usr/bin/nano -w -cLANG = de_DEERR = 0LC_MEASUREMENT = de_DEPS1 = [\ 033 [1; 36m] [[\ 033 [0; 36m] \ u \ h [\ 033 [0; 37m]:\ w [\ 033 [1; 36m]] [\ 033 [m] $[\ 033 [0; 37; 00m]ILLEGAL_FAT_CHARS =/:*?<> |OSSO_PRODUCT_KEYBOARD =德语AF_DEFINES_SOURCED = 1SHLVL = 1HOME =/rootSDL_AUDIODRIVER =脉冲OSSO_SWAP =/home/user/MyDocsOSSO_PRODUCT_RELEASE_VERSION = 20.2010.36-2LS_OPTIONS =-颜色LAUNCHWRAPPER_TRYRESTART =/etc/osso-af-init/launch-wrapper-tryrestart.shOSSO_PRODUCT_NAME = N900AF_INIT_DIR =/etc/osso-af-initMMC_DEVICE_FILE =/dev/mmcblk0p1LOGNAME =根DBUS_SESSION_BUS_ADDRESS = unix:abstract =/tmp/dbus-eCbOI2qrVP,guid = cd1dea104334a338a9007b9700000014LAUNCHWRAPPER =/etc/osso-af-init/launch-wrapper.shOSSO_PRODUCT_WLAN_CHANNEL = fcc/usMAX_FILENAME_LENGTH = 255显示=:0.0LAUNCHWRAPPER_NICE =/etc/osso-af-init/nice-launch-wrapper.shLC_TIME = de_DEINTERNAL_MMC_SWAP_LOCATION =/home/user/MyDocsLC_NAME = de_DEOSSO_PRODUCT_REGION =德国_ =/usr/bin/gnu/env

LC_PAPER=de_DE LC_ADDRESS=de_DE LC_MONETARY=de_DE AF_PIDDIR=/tmp/af-piddir UPNP_ROOT=upnpav:// SHELL=/bin/sh TERM=xterm DISABLE_GATEWAY=1 GTK2_RC_FILES=/etc/hildon/theme/gtk-2.0/gtkrc TMPDIR=/var/tmp MMC_SWAP_LOCATION=/media/mmc1 LC_NUMERIC=de_DE MMC_MOUNTPOINT=/media/mmc1 OLDPWD=/root HILDON_FM_OBEX_ROOT=obex:// LAUNCHWRAPPER_NICE_KILL=/etc/osso-af-init/nice-kill-launch-wrapper.sh INTERNAL_MMC_MOUNTPOINT=/home/user/MyDocs OSSO_VERSION=RX-51_2009SE_20.2010.36-2_PR_MR0 USER=root LS_COLORS=no=00:fi=00:di=00;36:ln=00;35:pi=40;33:so=01;35:bd=40;32;00:cd=40;32;00:or=01;05;37;41:mi=01;05;37;41:ex=00;33:.cmd=00;32:.exe=00;32:.com=00;32:.btm=00;32:.bat=00;32:.sh=00;32:.csh=00;32:.tar=00;31:.tgz=00;31:.arj=00;31:.taz=00;31:.lzh=00;31:.zip=00;31:.z=00;31:.Z=00;31:.gz=00;31:.bz2=00;31:.bz=00;31:.tz=00;31:.rpm=00;31:.cpio=00;31:.jpg=00;35:.gif=00;35:.bmp=00;35:.xbm=00;35:.xpm=00;35:.png=00;35:.tif=00;35: LC_TELEPHONE=de_DE SESSION_BUS_PID_FILE=/tmp/dbus_session_bus.pid.user OSSO_PRODUCT_HARDWARE=RX-51 STATESAVEDIR=/tmp/osso-appl-states LAUNCHWRAPPER_NICE_TRYRESTART=/etc/osso-af-init/nice-launch-wrapper-tryrestart.sh OSSO_PRODUCT_FULL_NAME=Nokia N900 OSSO_PRODUCT_RELEASE_FULL_NAME=Maemo 5 OSSO_PRODUCT_RELEASE_NAME=Maemo 5 MYDOCSDIR=/home/user/MyDocs PATH=/usr/bin/gnu:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin LC_MESSAGES=de_DE OSSO_PRODUCT_SHORT_NAME=Nokia N900 SESSION_BUS_ADDRESS_FILE=/tmp/session_bus_address.user LC_IDENTIFICATION=de_DE PWD=/home/user/MyDocs EDITOR=/usr/bin/nano -w -c LANG=de_DE ERR=0 LC_MEASUREMENT=de_DE PS1=[\033[1;36m][[\033[0;36m]\u\h[\033[0;37m]:\w[\033[1;36m]][\033[m]$ [\033[0;37;00m] ILLEGAL_FAT_CHARS=/:*?<>| OSSO_PRODUCT_KEYBOARD=German AF_DEFINES_SOURCED=1 SHLVL=1 HOME=/root SDL_AUDIODRIVER=pulse OSSO_SWAP=/home/user/MyDocs OSSO_PRODUCT_RELEASE_VERSION=20.2010.36-2 LS_OPTIONS=--color LAUNCHWRAPPER_TRYRESTART=/etc/osso-af-init/launch-wrapper-tryrestart.sh OSSO_PRODUCT_NAME=N900 AF_INIT_DIR=/etc/osso-af-init MMC_DEVICE_FILE=/dev/mmcblk0p1 LOGNAME=root DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-eCbOI2qrVP,guid=cd1dea104334a338a9007b9700000014 LAUNCHWRAPPER=/etc/osso-af-init/launch-wrapper.sh OSSO_PRODUCT_WLAN_CHANNEL=fcc/us MAX_FILENAME_LENGTH=255 DISPLAY=:0.0 LAUNCHWRAPPER_NICE=/etc/osso-af-init/nice-launch-wrapper.sh LC_TIME=de_DE INTERNAL_MMC_SWAP_LOCATION=/home/user/MyDocs LC_NAME=de_DE OSSO_PRODUCT_REGION=Germany _=/usr/bin/gnu/env

只需在提示中输入env.

Just type env in the prompt.

这篇关于php exec crontab无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆