There are many many ways to have a full LAMP stack on a Windows machine and use it for PHP development like WAMP, for example. This is ok if you are developing just for fun, but in corporate level an on-boarding environment is much preferred. Having a pre-defined server image with all that is necessary to almost replicate your production server on a developer machine helps on preventing errors and, most importantly, quickly have new developers up-to-speed with the corporation development environment.
Consider that you would need:
Creating this under windows can be such a hassle and in cases like this bundled solutions does not work.
To create a full LAMP stack on your windows machine and have it 100% stand-alone I have used Vagrant. On the prior version of Vagrant (V1) you had to use Putty in order to ssh to the VM and that was a painful process, with the newer version (V2) you can use built in Vagrant SSH as long you install an SSH support library like the one from GIT. There is a trick on the GIT installation, you must choose the option with the Linux / Unix commands (it has a red warning message about overwriting windows libs).
Prior installing Vagrant you will need to install Virtual Box. It is a Oracle virtual box machine. Very useful if you are on OSX or Linux and need to run tests on Windows IE9 (sig). This part of the process is very well explained on the Vagrant documentation.
Now comes to Vagrant install. It is fairly easy. Install Vagrant, then open command line and run “vagrant init”. It will create a default vagrant file with most of the basic things defined. Here comes a trick. The default vagrant file tries to download the precise VM. I have tried to contact Vagrant a couple times on Twitter and with no luck. There is an issue with the download of this box, the server resets the connection prior the download to be finished.
There is a way out of this: VagrantBox.es - Select the box that you best consider that matches your environment, add it on vagrant (vagrant box add) and finally update the vagrant file to use the new added box.
After this, everything is as simple as setting up the environment. Unless you have an specific need to add the GIT repository files under another folder you can set it all under the vagrant folder (same folder where the vagrant file is located).
I could use the GIT command line on windows to clone / commit my repositories, but using the GIT windows tool from GitHub is way too fun
I know that most of PHP developers use either Linux or OSX for development. It is much easier to setup and use, but if you are stuck with Windows, you might as well benefit of this.
Just a note, off course the main environment mentioned here was LAMP, but this same process can be used for Ruby, Phyton and may other hipster languages available =D
I had a networking issue with the current box that I’m using. It seems that it is a common issue with some boxes as mentioned here -
To fix run this: sudo /etc/init.d/networking restart
If you never installed a LAMP stack before, this article here will give you all the steps to install it correctly:
… or at least the future of this blog.
It has been a while since I have last written anything on this blog, reason is, lately I have been retweeting more and sharing more stuff on Google+ than writing here.
There is a lot happening with technology, PHP and web development in general and even if I wanted to, writing about everything is barely impossible.
Considering this, I have decided to keep writing on this blog but when only the situation requer to. For example, if there is a new piece of technology, PHP feature, etc that requires a longer explanation or more words than 140 chars, it will be here, otherwise, check Twitter and Google+.
To make this feed easier to check I have added some of the social medias that I’m part of in www.mcloide.com . There you will find my twitter account, my G+ account and some other accounts like Github and Coderwall.
See you on twitter or till next post right here
A worth reading post: Phil Sturgeon • Why some people hate PHP | Blog.
You have already probably seen this all over the web by now, so a piece of advise:
- Go to Paypal.com right now and change your password
Don’t wanna give your bad-luck a chance do you?
Please share, really need some help with this:
One of my colleagues was testing something and found out that a cron that was consuming 100% of memory and never ended. He is not a PHP Developer so he called me to take a look.
After less than a minute looking on the code I found the issue but I was perplexed to see how a code like that went to production.
In short this was the main execute code of the cron:
$row = array_shift($all);
As you can imagine, that array will never be empty, so the loop will never end.
Fixing it was very easy, a simple change from while to foreach took care of the issue, but a question remains for me: who tested this sh***
Obviously it wasn’t tested, otherwise this would have been caught way prior getting to production.
Sorry about my rant but I can’t avoid to get mad when I see a developer that did not even run the code prior commit it.
Most likely your application will be under a load balancer when in production. If you need to test if the url is HTTPS with PHP you will probably use env(‘HTTPS’), but under a load balancer that wont work.
You will need to check for HTTP_X_FORWARDED_PROTO server variable.
Off course testing this under your local environment can be painful, but here is a small tip that works wonders. Change your http-ssl.conf and on your virtual host add:
RequestHeader set X-Forwarded-Proto "https"
This will automatically add the HTTP_X_FORWARDED_PROTO on the response header from Apache to your app.
The same logic can be used for other Apache header responses.
I have seen the rant that was happening on Twitter that generated this article. At first I was a bit confused because I couldn’t figure out why there was an issue with the Composer Install. It is such a great way to install it and, truly, for me, at 1st sight, I haven’t seen nothing wrong.
Truth is that the current way that you install Composer can bring some problems and there is a solution for it.