52

I need to specify a directory when compiling php with --with-curl=

The curl binary is located at /usr/bin/curl

curl -V gives me

curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

locate curl gives me

/usr/bin/curl
/usr/lib/libcurl.so.3
/usr/lib/libcurl.so.3.0.0
/usr/lib64/libcurl.so.3
/usr/lib64/libcurl.so.3.0.0

removed /usr/share/... and other irrelevant files

UPDATE

Tried --with-curl=/usr/lib64 and --with-curl=/usr/lib although I'm pretty sure it's 64 bit.

checking for cURL support... yes
checking if we should use cURL for url streams... no
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/

SOLUTION

PHP requires curl-devel

2
  • 4
    for 64 bit ubuntu 17.** and after, curl is moved to /usr/include/x86_64-linux-gnu/curl, so just make a symlink cd /usr/include sudo ln -s x86_64-linux-gnu/curl Commented May 14, 2017 at 14:59
  • @minhajul's comment was the solution for me // Commented Dec 25, 2017 at 5:50

5 Answers 5

119

None of these will allow you to compile PHP with cURL enabled.

In order to compile with cURL, you need libcurl header files (.h files). They are usually found in /usr/include/curl. They generally are bundled in a separate development package.

Per example, to install libcurl in Ubuntu:

sudo apt-get install libcurl4-gnutls-dev

Or CentOS:

sudo yum install curl-devel

Then you can just do:

./configure --with-curl # other options...

If you compile cURL manually, you can specify the path to the files without the lib or include suffix. (e.g.: /usr/local if cURL headers are in /usr/local/include/curl).

Sign up to request clarification or add additional context in comments.

6 Comments

It's yum install curl-devel on centos, otherwise it's the right answer! Thanks!
@gAMBOOKa: Always keep in mind when compiling PHP (or any C program that is), that you will need the appropriate devel packages for any extension you want to compile that uses an external library.
on Ubuntu is sudo apt-get install libcurl4-gnutls-dev
On CentOS it look like yum install libcurl-devel
libcurl4-gnutls-dev package DOES NOT include curl headers, you need to install libcurl4-openssl-dev instead: $sudo apt-get install libcurl4-openssl-dev
|
21

For Ubuntu 17.0 +

Adding to @netcoder answer above, If you are using Ubuntu 17+, installing libcurl header files is half of the solution. The installation path in ubuntu 17.0+ is different than the installation path in older Ubuntu version. After installing libcurl, you will still get the "cURL not found" error. You need to perform one extra step (as suggested by @minhajul in the OP comment section).

Add a symlink in /usr/include of the cURL installation folder (cURL installation path in Ubuntu 17.0.4 is /usr/include/x86_64-linux-gnu/curl).

My server was running Ubuntu 17.0.4, the commands to enable cURL support were

sudo apt-get install libcurl4-gnutls-dev

Then create a link to cURL installation

cd /usr/include
sudo ln -s x86_64-linux-gnu/curl

3 Comments

This actually solved the issue I had on Ubuntu 18.04 while compiling PHP-5.3.22
Thanks! the symlink fixed it for me on Ubuntu 20.04 and compiling PHP 5.3.29 with libcurl4-openssl-dev
Can't believe, but that solved PHP 5.6.40 compilation issue on Debian 12!
2

Try just --with-curl, without specifying a location, and see if it'll find it by itself.

1 Comment

I did, it couldn't find it at the default location
0

If you're going to compile a 64bit version(x86_64) of php use: /usr/lib64/

For architectures (i386 ... i686) use /usr/lib/

I recommend compiling php to the same architecture as apache. As you're using a 64bit linux i asume your apache is also compiled for x86_64.

2 Comments

Apache is compiled for X86_64, so is my centOS installation. Since curl was installed with it, I'm guessing curl is 64bit as well.
Yep, The curl executable is 64bit, but it also installed 32bit versions of the library(*.so files) so 32bit application can also be linked with the curl library.
0

php curl lib is just a wrapper of cUrl, so, first of all, you should install cUrl. Download the cUrl source to your linux server. Then, use the follow commands to install:

tar zxvf cUrl_src_taz
cd cUrl_src_taz
./configure --prefix=/curl/install/home
make
make test    (optional)
make install
ln -s  /curl/install/home/bin/curl-config /usr/bin/curl-config

Then, copy the head files in the "/curl/install/home/include/" to "/usr/local/include". After all above steps done, the php curl extension configuration could find the original curl, and you can use the standard php extension method to install php curl.
Hope it helps you, :)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.