This is the third in a series of eight posts detailing tips on deploying to Zend Server. The previous post in the series detailed creating recurring jobs via Zend Job Queue, à la cronjobs.
Today, I'm sharing a very short deployment script tip learned by experience.
Tip 3: chmod
In the first tip, I detailed writing deployment scripts. One of the snippets I shared was a chmod routine:
$command = 'chmod -R a+rwX ./data'; echo " Executing `$command` "; system($command);
The code is fine; what I did not share is where in the deployment script you should invoke it. As I discovered from experience, this is key.
Zend Server's deployment scripts run as the zend user. If they are writing any data to the data directory, that data is owned by the zend user and group — and often will not be writable by the web server user. If you have scheduled jobs that need to write to the same files, they will fail… unless you have done the chmod after your deployment tasks are done.
So, that's today's tip: if you need any directory in your application to be writable by scheduled jobs, which will run as the web server user, make sure you do your chmod as the last step of your deployment script.
The next tip in the series is another short one, and will detail how to secure your Job Queue job scripts.