Hi,
I recently added a cron script on Forge to make automated backups of the database. I do this by using the package by Shawn McCool:
https://github.com/heybigname/backup-manager/
The way I've implemented it is to create an Artisan command that embeds the boiler plate code to create the backup and then email it to me. However, in the logs for the cron script I get this:
Creating backup...
Backup created: backup20150208002101.sql.gz.gz
Sending email(s)...
exception 'ErrorException' with message 'fopen(/home/forge/default/backup/backup20150208002101.sql.gz): failed to open stream: No such file or directory' in /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php:142
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleError(2, 'fopen(/home/for...', '/home/forge/def...', 142, Array)
#1 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php(142): fopen('/home/forge/def...', 'rb')
#2 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php(84): Swift_ByteStream_FileByteStream->_getReadHandle()
#3 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php(34): Swift_ByteStream_FileByteStream->read(8190)
#4 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(557): Swift_Mime_ContentEncoder_Base64ContentEncoder->encodeByteStream(Object(Swift_ByteStream_FileByteStream), Object(Swift_Transport_StreamBuffer), 0, 78)
#5 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(532): Swift_Mime_SimpleMimeEntity->_bodyToByteStream(Object(Swift_Transport_StreamBuffer))
#6 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(572): Swift_Mime_SimpleMimeEntity->toByteStream(Object(Swift_Transport_StreamBuffer))
#7 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(532): Swift_Mime_SimpleMimeEntity->_bodyToByteStream(Object(Swift_Transport_StreamBuffer))
#8 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php(608): Swift_Mime_SimpleMimeEntity->toByteStream(Object(Swift_Transport_StreamBuffer))
#9 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Message.php(170): Swift_Mime_SimpleMessage->toByteStream(Object(Swift_Transport_StreamBuffer))
#10 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(327): Swift_Message->toByteStream(Object(Swift_Transport_StreamBuffer))
#11 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(428): Swift_Transport_AbstractSmtpTransport->_streamMessage(Object(Swift_Message))
#12 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(444): Swift_Transport_AbstractSmtpTransport->_doMailTransaction(Object(Swift_Message), 'info@studentfab...', Array, Array)
#13 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(176): Swift_Transport_AbstractSmtpTransport->_sendTo(Object(Swift_Message), 'info@studentfab...', Array, Array)
#14 /home/forge/default/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php(85): Swift_Transport_AbstractSmtpTransport->send(Object(Swift_Message), Array)
#15 /home/forge/default/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(329): Swift_Mailer->send(Object(Swift_Message), Array)
#16 /home/forge/default/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(151): Illuminate\Mail\Mailer->sendSwiftMessage(Object(Swift_Message))
#17 /home/forge/default/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(214): Illuminate\Mail\Mailer->send('emails.backup', Array, Object(Closure))
#18 /home/forge/default/app/commands/MakeBackup.php(70): Illuminate\Support\Facades\Facade::__callStatic('send', Array)
#19 /home/forge/default/app/commands/MakeBackup.php(70): Illuminate\Support\Facades\Mail::send('emails.backup', Array, Object(Closure))
#20 /home/forge/default/vendor/laravel/framework/src/Illuminate/Console/Command.php(112): MakeBackup->fire()
#21 /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /home/forge/default/vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php(889): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php(193): Symfony\Component\Console\Application->doRunCommand(Object(MakeBackup), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 /home/forge/default/artisan(59): Symfony\Component\Console\Application->run()
#27 {main}
Backup failed!
The file it can't open (or send in this case) is actually not even created so It has to be some permission being wrong. I've tried both with Forge and root as the user (Forge is the account I use myself when SSH:ing in). In my dev environment it works without any hiccups.
Any guesses?