php exec crontab无法正常工作

时间:2011-10-25 03:44:11

标签: php permissions cron exec crontab

我在我的本地CentOS 5.3服务器上尝试,当我尝试在我的php代码中从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 root 311288 2007年3月15日/ usr / bin / crontab。
并且没有/etc/cron.allow和/etc/cron.deny文件。

我已经在php中关闭了Safe_mode。有什么建议可以解决这个问题吗?

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

我注意到我的问题与selinux有关。 当我禁用selinux

时,它正在工作

echo 0> / selinux的/执行

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

1 个答案:

答案 0 :(得分:1)

  1. 将/ usr / bin添加到shell env路径
  2. 将crontab添加到与webserver相同的组
  3. 尝试使用php exec(“echo $ PATH”)查看路径变量。你也可以寻找unsetenv并临时禁用它
  4. 您可以在php错误日志中查看错误的详细说明,但正如您所说,您熟悉Linux我无法教您有关用户权限管理的信息。对于env变量和路径变量的注释,它并不总是确保在运行程序时导出env变量。您的问题可能就是这种情况。这意味着操作系统被破坏或您必须手动将env变量附加到您的程序。解决方法可以是查找shell查找程序的位置和符号链接程序。在您的错误日志中,似乎crontab位于文件夹/ usr / bin中。这似乎也不是一个编程问题。在server.stackexchange询问为什么找不到crontab。例如,我的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 /主题/ GTK-2.0 /的gtkrc TMPDIR = / var / tmp中 MMC_SWAP_LOCATION = /媒体/ MMC1 LC_NUMERIC = de_DE这个 MMC_MOUNTPOINT = /媒体/ MMC1 OLDPWD = /根 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 =根 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:前= 00; 33: .CMD = 00; 32: .EXE = 00; 32: .COM = 00; 32: .btm的= 00; 32: .BAT = 00; 32: .SH = 00; 32: .csh = 00; 32:< /em>.tar=00;31:.tgz=00;31:.arj=00;31:.taz=00;31:.lzh=00; 31:的.zip = 00; 31: .Z = 00; 31: .Z = 00; 31:。广州= 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:< EM> .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-申请态 LAUNCHWRAPPER_NICE_TRYRESTART =的/ etc / OSSO-AF-INIT / nice-launch-wrapper-tryrestart.sh OSSO_PRODUCT_FULL_NAME =诺基亚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 =诺基亚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;36米] [[\ 033 [0;36米] \ U \ H [\ 033 [0;37米]:\ W [\ 033 [1;36米]] [\ 033 [米] $ [\ 033 [0; 37;00米] ILLEGAL_FAT_CHARS = /?:* LT;&GT; | OSSO_PRODUCT_KEYBOARD =德国 AF_DEFINES_SOURCED = 1 SHLVL = 1 HOME = /根 SDL_AUDIODRIVER =脉冲 OSSO_SWAP = / home / user中/ MyDocs OSSO_PRODUCT_RELEASE_VERSION = 20.2010.36-2 LS_OPTIONS = - 色 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 =根 DBUS_SESSION_BUS_ADDRESS = UNIX:抽象= / TMP / DBUS-eCbOI2qrVP,GUID = cd1dea104334a338a9007b9700000014 LAUNCHWRAPPER =的/ etc / OSSO-AF-INIT / launch-wrapper.sh OSSO_PRODUCT_WLAN_CHANNEL = FCC /美 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 =德国 _ =的/ usr /斌/ GNU / env的

    只需在提示符中输入env即可。