About Jay Jay

Hi there. My name is John Elliot V. My friends call me Jay Jay. I talk about technology on my blog at blog.jj5.net and make videos about electronics on my YouTube channel @InTheLabWithJayJay.

PHP Traits and Grafts

Reading about traits and grafts in PHP: Request for Comments: Horizontal Reuse for PHP, PHP Traits, Using Traits in PHP 5.4 and PHP Traits: Good or Bad?. They mentioned the Diamond Problem.

I learned some new syntax too! E.g.:

 return $_instance ?: $_instance = new $class;

The ternary operator as a ‘binary’ operator! Cool! See here for details: Since PHP 5.3, it is possible to leave out the middle part of the ternary operator.

Running Apache as ME!

On my development machine I want Apache to run under my user id so I can automatically generate files (and have permission to write them).

I configured Apache like this:

root@mercy:/etc/apache2# grep -R www-data .
./envvars:export APACHE_RUN_USER=www-data
./envvars:export APACHE_RUN_GROUP=www-data

root@mercy:/etc/apache2# vim envvars 

export APACHE_RUN_USER=jj5
export APACHE_RUN_GROUP=jj5

root@mercy:/etc/apache2# apache2ctl graceful
/var/lock/apache2 already exists but is not a directory owned by jj5.
Please fix manually. Aborting.

root@mercy:/etc/apache2# chown jj5:jj5 /var/lock/apache2

root@mercy:/etc/apache2# apache2ctl graceful

Easy-peasy!

Wait… that didn’t work. The problem was apache2ctl graceful didn’t pick up the new envvars file, this fixed it:

root@mercy:/etc/apache2# /etc/init.d/apache2 restart