2 Aug 2013 • 1 minute read When you apt-get install php5
on a Debian/Ubuntu server, you’ll notice that APT will automatically install a bunch of apache2
packages as well. This can be pretty annoying if you’re planning on using another web server (or no web server at all).
If you take a look at the package dependencies (Debian/Ubuntu) you’ll see why this happens - php5
needs one of either libapache2-mod-php5
, libapache2-mod-php5filter
, php5-cgi
, or php5-fpm
. APT doesn’t care which package it installs; it just picks the first package that satisfies the dependency, which is why you get the apache2
packages.
You can get around this by installing one of the other dependencies before php5
. For example, apt-get install php5-fpm php5
or apt-get install php5-cgi php5
.
(Read more) 23 Sep 2012 • 1 minute read After upgrading php-fpm, my PHP-based sites were returning “502 Bad Gateway” errors. This can happen when the php5-fpm package reconfigures itself to listen on a different socket. Here’s how you can solve it.
Check to make sure that php-fpm is running with ps aux | grep php
- if you can’t see any php-fpm processes in the output, then you may need to re-install php-fpm. If php-fpm is running okay, then skip this first step.
sudo apt-get remove php5 php5-cgi php5-fpm
sudo apt-get install php5 php5-cgi php5-fpm
The thing to notice here is that the order in which you install the packages is important. In the past I have found that installing them in the wrong order causes the packages to be configured incorrectly.
Next, get php-fpm to listen on the correct host/port. In /etc/php5/fpm/pool.d/www.conf
change the listen
value to match the fastcgi_pass
location in your Nginx configuration. For example, I changed mine from:
listen = /var/run/php5-fpm.sock
To:
If you are configuring php-fpm to listen on a Unix socket, you should also check that the socket file has the correct owner and permissions. While I wouldn’t recommend it, you can simply give read-write permissions to all with sudo chmod go+rw /var/run/php5-fpm.sock
.
Restart php-fpm with sudo service php5-fpm restart
and everything should work normally again.
(Read more) 25 Jun 2011 • 1 minute read It’s debatable whether or not it’s good practice to use short syntax in PHP. I personally prefer to use short syntax because it keeps my view files looking tidy.
The regular expression below will find all one-liner print
and echo
statements (e.g. <?php print $var; ?>
) and convert them to <?= $var ?>
statements. It will not match statements containing closing brackets, for example when using ternary operators: <?= ($foo == $bar) ? 'Foobar' : 'Foo' ?>
Find:
<\?php[\s]*(print|echo)[\s]*\(?([^>\)]+?)\)?[\s]*;?[\s]*\?>
(Read more)