Nastavení

Používám webový server s předinstalovaným CentOS 7.1 x64, Sentora a modulem suhosin.

Musím spustit skript PHP, který to dělá (mimo jiné)

echo exec('mysqldump -u'.USER.' -p'.PASSWORD.' '.DATABASE.' | gzip > '.$fileName.'.sql.gz'); 

Abych to mohl udělat, odstranil jsem exec z černé listiny suhosinu, a to jak prostřednictvím administrátorského panelu Sentora, tak odstraněním exec ze seznamu zakázaných příkazů ve Windows /etc/sentora/panel/modules/cron/code/controller.ext.php.

Jak je uvedeno na oficiálních stránkách, zajistil jsem, aby vlastník obou /var/spool/cron a var/spool/cron/apache je apache a že oprávnění jsou správná (770, respektive 660)

Problém

Když vytvořím novou úlohu cron, pomocí nástroje Cron Manager společnosti Sentora cron nedělá to, co má (dumping a zip databáze), i když spouští skript PHP. Mohu potvrdit, že skript nemá žádné problémy, protože dělá to, co má dělat, když jej aktivuji ručně (prostřednictvím prohlížeče).

Mohu také ověřit, že cron je běží - crontab -u apache -l vrací:

################################################################################# # CRONTAB FOR SENTORA CRON MANAGER MODULE # Module Developed by Bobby Allen, 17/12/2009 # File automatically generated by Sentora 1.0.3 ################################################################################# # NEVER MANUALLY REMOVE OR EDIT ANY OF THE CRON ENTRIES FROM THIS FILE, # -> USE SENTORA INSTEAD! (Menu -> Advanced -> Cron Manager) ################################################################################# # CRON ID: 6 * * * * * php -d suhosin.executor.func.blacklist='passthru, show_source, shell_exec, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg' -d open_basedir='/var/sentora/hostdata/zadmin/:/var/sentora/temp/' /var/sentora/hostdata/zadmin/public_html/my_subdomain/cron/cron.php 

Co dělám špatně? Pokud to má nějaký význam, dělám to všechno pro subdoménu.

  • 1 Pokud spustíte příkaz, ale ne jako úlohu cron, funguje podle očekávání?
  • 1 @Steve To dělá - na zadaném místě je výpis databáze a obsah je podle očekávání.
  • 1 Ujistěte se, že se uživatel cron shoduje s vlastníkem souboru.
  • @Steve Vlastníkem souboru byl root, zatímco uživatel cron byl apache. Vytvořil jsem skupinu s oběma uživateli (root a apache) nastavenými jako členové a dané skupině jsem vlastnil cron.php. To však stále nefunguje, jak jsem doufal (bez výpisu db). Je ještě něco, co bych měl dělat / kontrolovat?
  • 1 vraťte se k základům ... namísto použití skupiny dejte vlastnictví souboru kterémukoli uživateli, který spouští úlohu cron

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?