Yosemite / El Capitan php-gd + mcrypt installation
You are right, Yosemite's built-in PHP comes without PNG and FreeType support.
Update 2015/10 for El Captian: With OS X 10.11 El Capitan PNG support is back, but FreeType is still missing.
Solution
Use the Homebrew package manager to painlessly build and install a complete PHP and replace it in Apache's config. The whole process only takes about ten minutes if you follow the steps below.
A quick (but complete) walk through
(Note 1: I use Homebrew here, a package management system for OS X. If you are acquainted with MacPorts – another package manager – you can acchieve the same results with that system. It is also possible to use my Homebrew solution in parallel to an existing MacPorts installation on your machine.)
(Note 2: If you want to read all the details about the installation process, have a look at the Homebrew basic installation and the Homebrew PHP installation information. But you really won't need that if you follow these steps.)
Now let's go...
First install Xcode from App Store. If you already have it, check App Store again, to make sure you've got the latest version!
Now you need to install the Xcode Command Line Tools. To do so, open a Terminal and enter:
xcode-select --install
The next command will install the Homebrew package manager system:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
The script explains what it will do and then pauses before it does it.
The next command to enter is a kind of system status test:
brew doctor
This checks the basics of the Homebrew installation.
I got a warning "You have MacPorts or Fink installed: /opt/local/bin/port ..." which I ignored successfully. ;)
Now setup the homebrew/dupes tap which has dependencies we need:
brew tap homebrew/dupes
Setup the homebrew/versions tap which also has dependencies we need:
brew tap homebrew/versions
Then run the following command:
brew tap homebrew/homebrew-php
Now you are ready to finally build PHP. For a list of available configuration options you may run one of these:
brew options php55
brew options php56
But I was fine just using the defaults.
To do so enter ONE of these two, depending on your needs:
brew install php55
brew install php56
(This takes a while, please be patient!)
while installing php56 (5.6.x) on Yosemite (10.10.5) there is a bug please see this issue on github. use
brew install php56 --without-ldap
instead.
If you get an error of type "Cannot find OpenSSL's " you have not installed the Xcode Command Line Tools as I told you in the beginning. ;) Go ahead, install them and re-run that last command.
PHP is built now and the script will end with some details about how to use it:
Open httpd.conf (should be located at /private/etc/apache2/httpd.conf) and enable PHP by adding ONE of these two lines, depending on which PHP version you just installed:
LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Don't forget to comment out any existing LoadModule php5_module... line that might be present from Yosemite's own PHP version!
Restart Apache
sudo apachectl restart
Your new php.ini file can be found in: /usr/local/etc/php/5.5/php.ini
Enjoy!
Installing mcrypt on OSX 10.8.2 - PHP 5.3.15 with homebrew
First check if brew is up-to-date:brew doctor
Second install mcrypt based on php version:brew install php53-mcrypt
NB: Step three below is not required on recent versions of brew:
Third open php.ini file and add reference:sudo vi /private/etc/php.ini
extension="/usr/local/Cellar/php53-mcrypt/5.3.25/mcrypt.so"
Finally, restart apache:sudo apachectl restart
After upgrade, PHP no longer supports PNG operations
Here's another option, from the guys from liip, here. This is a PHP package that comes pre-built for Yosemite (older versions works too) but it is just one line of code:
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5
After that, everything is ready to work as expected. The configuration that cames with that installation is well suited for Symfony 2 development, but it should work just fine with other use cases.
Finally, if you need to use the updated PHP CLI, too, but you don't want to use the PHP version that comes with the OS, then you could also add to your .bash_profile
or similar this line of code:
export PATH=/usr/local/php5/bin:$PATH
Homebrew: Install php mcrypt
It appears that as of 31rst March 2018, the homebrew-php is deprecated and all php libraries will be part of homebrew/core.
This also means that:
Forgive my stupid question, I'm not sure I understand: there won't be a php71-mcrypt, but there may be a php-mcrypt, as long as it accepts any installed php package?
There won't be either but we'd accept the php or php@7.1 formula installing mcrypt by default.
In the announcement, you also mentioned the CI workload as a reason for deprecating the tap. Until the tap is officially archived, would it make sense to limit formula updates to supported PHP versions (at this time, 5.6, 7.0, 7.1 and 7.2) in order to reduce CI workload and bottle builds?
I don't want to dictate how this tap is run pre-deprecation. That might not be a bad idea but given the tap is going away in a few months I think it's fine as-is until then.
In other words, mcrypt is now installed by default. See Zaph's comment on the other answer for a more detailed explanation.
I'm not sure about xdebug, but you might want to check there.
https://github.com/Homebrew/homebrew-php/issues/4721
p.s. You can check which modules are installed with php -m
Related Topics
Call to a Member Function Fetch() on Boolean
How to Find Unused Functions in a PHP Project
How to Do Error Logging in Codeigniter (Php)
PHP File Listing Multiple File Extensions
Smtp Configuration for PHP Mail
When Using Gmail for Smtp, Can You Set a Different "From" Address
"Connection for Controluser as Defined in Your Configuration Failed" with PHPmyadmin in Xampp
Creating and Update Laravel Eloquent
Google Drive PHP API - Simple File Upload
Google_Service_Directory - (403) Not Authorized to Access This Resource/Api
Getting Http Code in PHP Using Curl
Get Custom Product Attributes in Woocommerce
Php: Check If a File Is Loaded Directly Instead of Including
Laravel: How to Change the Default Auth Password Field Name
Is It Necessary to Declare PHP Array Before Adding Values with []
Allow Re-Sending New Order Notification in Woocommerce 5+
Symfony2 - Creating Own Vendor Bundle - Project and Git Strategy