In my php program I do exe("jekyll build");
as www-data but the command seems to be not working. I can manually issue jekyll build
command.
I presume you meant exec()
. Since PHP is running as www-data
, there are likely issues with file/dir permissions and environment setups (PATH
, GEM_HOME
, etc). The error output/result-code from the exec
call should provide more info.
It returns jekyll: not found
. How to allow www-data to use jekyll?
I need to add GEM_HOME and $HOME/gems to Apache envvar file.
Possibly the simplest thing to do is to create a shell script to run Jekyll with the correct environment. Something like build-site.sh
:
#!/bin/bash
PATH=<path-for-ruby-jekyll>:$PATH
export GEM_HOME=<path-for-gem-home>
jekyll build
Then you would execute the script from PHP:
exec('/home/user/build-site.sh');
# or:
exec('bash /home/user/build-site.sh');