How to Install PHP Extensions from Source — SitePoint – SitePoint
Sometimes it’s hard to know which PHP extensions you’ll need before you install PHP. In cases where you need to add extensions later on, you might get lucky and the extension could be in the repository of the OS you’re using. It might just be a simple
sudo apt-get install php5-intl
away. In other cases, however, you might need to install it from source – Phalcon is one such case, but it makes the procedure extremely simple by introducing vendor support, shortcuts and pre-written instructions for your OS to carry out. What if there’s no such thing for other extensions, though?In this tutorial, we’ll go through installing some custom extensions on Linux systems (and OS X – the process is nearly identical). The procedure is very similar to what we already did on Nitrous.io, but adapted for local environments – more specifically, Laravel Homestead. You can easily derive installation instructions from this tutorial and apply them to other distros.
If you haven’t already, read the Homestead post linked above and get it up and running. Immediately after running a new Homestead box, you should be able to do this:
That’s perfectly fine, this happens because the folder that’s mounted by default actually doesn’t contain any files yet. Now
vagrant ssh
into the VM, and execute the following commands:This creates a valid PHP Info file in the path that Homestead is set to by default. Refreshing the URL will now produce a PHPInfo screen:
To build extensions from source, we need the PHP dev tools installed on our machine, as well as a compiler that can produce the extension file. Here’s how you install these prerequisites on various operating systems:
If you’re using the most recent Homestead, all these tools will already be installed for you. With everything prepared, let’s start installing extensions.
There are two types of extensions you can install: bundled with PHP but not installed by default, and third party extensions. Third party extensions like Phalcon usually make the installation process much easier by providing shortcuts, as they don’t have to comply to certain traditions bundled PHP extensions are bound by.
First, let’s move into the home folder on the vm:
cd ~
. In there, make a downloads
folder, and cd
into it. When installing a bundled extension, you’ll need the source code of PHP on your machine, preferably one matching your current version. The version Homestead uses is 5.5.12, so I’ll be downloading that one:I’m using the Belgian mirror above, feel free to use that one or any other from the download archives.
To see the sources of all bundled extensions, go into the
ext
folder inside the unarchived PHP source code folder and do a list with ls
.First, we’ll install the PHP-intl extension if you don’t have it installed already. If you do, that’s fine – the installation procedure you’ll see below is identical for every bundled PHP extension. The intl extension is for internationalization – read more here if you’re interested.
Seeing as the intl extension needs the ICU library as a prerequisite (as stated in the requirements), let’s install that first.
Under other distributions, the installation instructions may vary. It’s best if you refer to the ICU site or your individual distribution’s docs for this step.
Once ICU is installed, do the following while still in the
ext
folder:Let’s explain what’s going on.
All we need to do now is enable the extension by having
php.ini
consume it. We’ll do that later, let’s compile a third party extension first.We’ll be installing Mongo as a third party extension. There are binary distributions available for Mongo which make installation simpler, but let’s do it manually for the sake of education. We’ll assume you already have the actual Mongo installed, and are thus focusing only on the PHP extension. If you don’t have Mongo installed, refer to their installation docs.
This has built our mongo.so file, and placed it into the extensions folder of our PHP installation. We’ll enable it in the next section.
To see if the compiled
.so
files are indeed in our PHP extensions folder, list out its contents:As you can see, there they are, highlighted in bright green.
To enable them, we need to tell
php.ini
about them. There are several ways to do this:This folder is the repository of all such individual
ini
files. Create two new files here:These commands created two new
ini
files, each for one of the extensions we’ve previously built. As they are now in the mods-available
folder, we can use the already available php5enmod
(short for PHP enable mod) command line tool.Note: If you don’t have the
php5enmod
tool, symlinking the ini
files into the conf.d
folder of various php
runtimes will do the trick:The reason why there’s four entries is that we have the command line version of PHP and the FPM version of PHP. Each uses its own
php.ini
file, and each loads its own conf.d
folder for extensions – hence, we need to add both extensions to both PHP versions if we want the extensions available all-around. Use this approach only if you don’t have the php5enmod
tool.Finally, let’s restart nginx and php-fpm to load these changes.
To see if we’ve got them installed, refresh the PHPinfo screen from before and search for mongo and intl respectively.
Success!
To remove extensions, there’s no need to delete any actual files unless you’re really low on space. You can do it in three ways:
As you can see, installing extensions from source is extremely simple, even if there are no precise instructions and even if the extension isn’t supported by an OS’s official repository. The next time you need to add an extension into your PHP installation on a *nix system (this tutorial applies to OS X as well), refer back to this post for a refresher.
Please leave your feedback below, and let me know if you’re confused by a specific extension and would like help with installing it.
Before you start installing PHP extensions from source, you need to have a few things in place. First, you need to have PHP installed on your system. You also need to have the PHP development environment set up, which includes tools like a compiler and make. Additionally, you need to have the PHP source code available, as you’ll be building the extension directly from this code. Lastly, you need to have the extension’s source code. This can usually be downloaded from the extension’s official website or from a repository like PECL.
After installing a PHP extension, you can verify its installation by using the phpinfo() function. This function provides a lot of information about your PHP installation, including the list of installed extensions. To use it, create a new PHP file in your web server’s document root, add a call to phpinfo(), and then view this file in your web browser. The installed extensions are listed in the ‘PHP Core’ section.
Yes, you can install PHP extensions on a Windows system. However, the process is slightly different compared to a Unix-like system. Instead of compiling the extension from source, you would typically download a precompiled DLL file and add it to your PHP installation. The PHP.net website provides detailed instructions on how to do this.
If you encounter errors during the installation process, the first step is to carefully read the error message. It often contains clues about what went wrong. Common issues include missing dependencies, incorrect configuration options, and problems with the PHP source code. If you can’t resolve the issue on your own, consider seeking help from the PHP community. There are many forums and mailing lists where you can ask for assistance.
Updating a PHP extension typically involves downloading the latest version of the extension’s source code and then repeating the installation process. However, the exact steps can vary depending on the extension. It’s a good idea to check the extension’s official documentation for specific update instructions.
Yes, it’s possible to install multiple PHP extensions at once. This can be done by specifying multiple extensions in the configure command. However, keep in mind that each extension may have its own set of dependencies and configuration options.
Uninstalling a PHP extension involves removing the extension’s configuration from your PHP.ini file and then restarting your web server. If the extension was installed as a shared module, you may also need to delete the module’s .so or .dll file.
The PECL repository is a collection of PHP extensions that are distributed as source code. These extensions can be installed using the PECL command, which automates the process of downloading, compiling, and installing extensions.
Yes, it’s possible to install PHP extensions without root access. This can be done by installing PHP in your home directory and then installing the extensions there. However, this approach requires more technical knowledge and may not be suitable for all users.
There are many PHP extensions available, each providing additional functionality to the PHP language. Some common extensions include MySQLi for interacting with MySQL databases, GD for creating and manipulating image files, and cURL for making HTTP requests.
Bruno is a blockchain developer and technical educator at the Web3 Foundation, the foundation that's building the next generation of the free people's internet. He runs two newsletters you should subscribe to if you're interested in Web3.0: Dot Leap covers ecosystem and tech development of Web3, and NFT Review covers the evolution of the non-fungible token (digital collectibles) ecosystem inside this emerging new web. His current passion project is RMRK.app, the most advanced NFT system in the world, which allows NFTs to own other NFTs, NFTs to react to emotion, NFTs to be governed democratically, and NFTs to be multiple things at once.
© 2000 – 2024 SitePoint Pty. Ltd.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
source