.env environment variables when working with Apache

I’m getting in the habit of using a .env file for loading environment variables. Laravel already uses them for setting up configuration. It’s a nice way to setup variables that can be used in bash or through a php library like vlucas/phpdotenv.

For a site I’m working on I wanted the environment variable APP_ENV set to “local” in development and set to “production” on the live site (each environment has it’s own .env file). My configuration keep on getting overridden somewhere and returning “dev”.

What happened was the APP_ENV environment variable was already set in the Apache virtual host configuration and phpdotenv will not override variable set in Apache virtual host configuration.

If you are running into this same issue a pretty easy fix. Unset the variable in you .htaccess file and then the correct value will load from your .env file. At the top of my .htaccess file in the public root I have this then:

<IfModule mod_env.c>
    # unset the APP_ENV variable since it might have been set in Apache's vhost file and needs to be used from .env
     UnsetEnv APP_ENV
</IfModule>

Hope that helps!

::before and ::after

This is the first in a series of “today I learned” posts. Today it’s all about the pseudo element ::before and ::after.  This isn’t new news to most I’m sure, but I’ve just recently started using these and think they are pretty cool.

Say you are working on a site where you have access to the styles but not the DOM. You need to add an element to the page without actually adding any markup to a page. That’s where ::before and ::after come in. You can add either of these .element::before or .element::after to add extra element to the DOM this way.

I created an example (albeit kinda crude) to show how to use the elements. The snowman’s torso is a DOM element and the head and foot are added via .snowman::before and .snowman::after css elements. Same with the hands, there’s a empty .hand element on the page and the left and right hands are placed with .hands::before and .hands::after.

See the Pen MKVwLg by Nate Nolting (@natenolting) on CodePen.0

One caveat I’ve found is if you want the added ::before or ::after to behave like a block element you must add content: ""; to your css in order for the element to display, otherwise it has no height or width.

It does seem that we can all use it, so go a make some pseudo elements!