In order to get dirvish-runall to work properly from cron, I had to add
Dirvish: /usr/local/sbin/dirvish
to the dirvish master.conf file. This is because in dirvish-runall the default is to just run dirvish. The offending line in dirvish-runall is:
$$Config{Dirvish} ||= 'dirvish';
The other option would be to set up a proper environment in my crontab.