How I solved FreePBX 15 proc_open(/tmp/cron.error): failed to open stream: Permission Denied

Problem

While trying to apply the FreePBX configuration using the Web UI, you see the following error message.

There was an error during reload: Unknown Error. Please Run: fwconsole reload --verbose

Unknown Error. Please Run: fwconsole reload --verbose

When you try to fwconsole reload --verbose, you see the following error message:

{"message":"Reload Started"}

In Cron.class.php line 281:
                                                                         
  [Whoops\Exception\ErrorException (2)]                                  
  proc_open(/tmp/cron.error): failed to open stream: Keine Berechtigung  
                                                                         

Exception trace:
 () at /var/www/html/admin/libraries/BMO/Cron.class.php:281
 Whoops\Run->handleError() at n/a:n/a
 proc_open() at /var/www/html/admin/libraries/BMO/Cron.class.php:281
 FreePBX\Cron->installCrontab() at /var/www/html/admin/libraries/BMO/Cron.class.php:162
 FreePBX\Cron->remove() at /var/www/html/admin/libraries/BMO/Job.class.php:238
 FreePBX\Job->init() at /var/www/html/admin/libraries/BMO/Job.class.php:91
 FreePBX\Job->add() at /var/www/html/admin/libraries/BMO/Job.class.php:73
 FreePBX\Job->addClass() at /var/www/html/admin/modules/dashboard/Dashboard.class.php:147
 Dashboard->doDialplanHook() at /var/www/html/admin/libraries/BMO/DialplanHooks.class.php:107
 FreePBX\DialplanHooks->processHooks() at /var/www/html/admin/libraries/Console/Reload.class.php:318
 FreePBX\Console\Command\Reload->reload() at /var/www/html/admin/libraries/Console/Reload.class.php:91
 FreePBX\Console\Command\Reload->execute() at /var/www/html/admin/libraries/Composer/vendor/symfony/console/Command/Command.php:255
 Symfony\Component\Console\Command\Command->run() at /var/www/html/admin/libraries/Composer/vendor/symfony/console/Application.php:960
 Symfony\Component\Console\Application->doRunCommand() at /var/www/html/admin/libraries/Composer/vendor/symfony/console/Application.php:255
 Symfony\Component\Console\Application->doRun() at /var/www/html/admin/libraries/Composer/vendor/symfony/console/Application.php:148
 Symfony\Component\Console\Application->run() at /data/var/lib/asterisk/bin/fwconsole:163

reload [--json] [--dry-run] [--skip-registry-checks] [--dont-reload-asterisk]

Solution

These steps worked for me (run in the same shell where you would run fwconsole reload, as root*):

fwconsole chown
rm /tmp/cron.error
chmod +s /usr/bin/crontab
chmod 777 /tmp
fwconsole chown

After that, you’ll be able to run fwconsole reload --verbose again:

{"message":"Reload Started"}
{"message":"Reload Complete"}