Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Cederman's avatar

Database Backup Manager can't create backup file

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?

0 likes
2 replies
michaeldyrynda's avatar

Look at the file it's trying to create and the file it's trying to open.

The former has an extension of .gz.gz. I'm not familiar with the package itself, though; is there some configuration required to set file names perhaps? Does the file with the double extension get created at all?

Cederman's avatar

Yeah I noticed that to but that just a type in what I write in the console. The actual filename is with only one extension so that is not the issue. The code was like $filename.'.gz' where $filename was 'file.gz' so It got doubled up. Hoped it would be that easy :)

But as I said, it works in the dev environment so it has to be a permission issue. I just don't know how to go about it.

Please or to participate in this conversation.