php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #72879 Pecl install intl make error with PHP 7.0.8
Submitted: 2016-08-18 08:03 UTC Modified: 2018-04-16 11:36 UTC
Votes:78
Avg. Score:4.5 ± 0.8
Reproduced:76 of 76 (100.0%)
Same Version:21 (27.6%)
Same OS:31 (40.8%)
From: daniel at ohr dot edu Assigned: cmb (profile)
Status: Wont fix Package: intl (PECL)
PHP Version: 7.0.9 OS: Mac OS X El Capitan
Private report: No CVE-ID: None
 [2016-08-18 08:03 UTC] daniel at ohr dot edu
Description:
------------
/private/tmp/pear/temp/intl/intl_error.h:24:10: fatal error: 'ext/standard/php_smart_str.h' file not found
#include <ext/standard/php_smart_str.h>
         ^
1 error generated.
make: *** [php_intl.lo] Error 1
ERROR: `make' failed

seems that pecl is calling for php_smart.str.h which doesn't exist in PHP 7
needs php_smart_string.h 

something broke here


Test script:
---------------
sudo pecl install intl
using icu4c/57.1


Expected result:
----------------
Expect to have no fatal-errors
supposed to make intl.so



Actual result:
--------------
intl.so is not made

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-08-18 08:29 UTC] cmb@php.net
-Status: Open +Status: Verified -Assigned To: +Assigned To: cmb
 [2016-08-18 08:29 UTC] cmb@php.net
It seems that PECL/intl is not in sync with ext/intl.

Any particular reason why you don't use the bundled ext/intl?
 [2016-08-18 11:59 UTC] daniel at ohr dot edu
I changed my php/mysql setup (from XAMPP to MAMP)  XAMPP doesn't have php compiled with intl already enabled. However if you're using Mac OS X and try to do a pecl install this is what happens using php 7.0.8 so even if its bundled, if someone needs to revert to a different version or something they won't be able to create a make file.
 [2016-08-18 13:07 UTC] cmb@php.net
-Assigned To: cmb +Assigned To: stas
 [2016-08-18 13:07 UTC] cmb@php.net
Stas, are there any plans to keep PECL/intl up-to-date?

The manual states[1]:

| This extension is bundled with PHP as of PHP version 5.3.0.
| Alternatively, the PECL version of this extension may be used
| with all PHP versions greater than 5.2.0 (5.2.4+ recommended).

[1] <http://php.net/manual/en/intl.requirements.php>
 [2016-09-11 16:32 UTC] issamux at gmail dot com
can't install install intl extension 
 sudo pecl install intl
using MAMP and php 7.0.10
In file included from /private/tmp/pear/temp/intl/php_intl.h:34:
/private/tmp/pear/temp/intl/intl_error.h:24:10: fatal error: 'ext/standard/php_smart_str.h' file not found
#include <ext/standard/php_smart_str.h>

any solution for this ??
 [2016-09-11 22:09 UTC] daniel at ohr dot edu
In the end its worth it install PHP via homebrew as well as apache 2.4 via Homebrew in which case intl is auto installed.  Install mysql, mariadb or mongodb as you wish via homebrew and you'll have your own stack, the way you want it without being subject to bundled stacks
 [2016-12-03 17:53 UTC] rebooter8d at gmail dot com
I faced with the same issue on Ubuntu 16.04 with PHP 7.0.13.
I downloaded the package here http://site.icu-project.org/download/58 and compile it. It was installed correctly and the config file been in /usr/bin/icu-config.
After that I run sudo pecl install intl command and show the way to config (just /usr/).
And I got the same error with php_smart_str.h file.

The reason why I tried to install this in Symfony framework. It told that I should have latest version of intl (quote: To get the latest internationalization data upgrade the ICU system package and the intl PHP extension.)
It's just a recommendation but anyway.
 [2017-05-19 07:17 UTC] serg at kalachev dot ru
Any progress in this issue ?
 [2017-05-19 10:30 UTC] daniel at ohr dot edu
The specific issue was never resolved
but in the end I installed php via homebrew, in which case you can add and remove intl as needed
 [2017-09-20 15:13 UTC] 66ton99 at gmail dot com
The same problem with Red Hat Enterprise Linux 7.2 PHP 7.0.12 and Intl 3.0.0
 [2017-10-24 05:11 UTC] kalle@php.net
-Status: Verified +Status: Assigned
 [2017-10-24 06:15 UTC] stas@php.net
-Status: Assigned +Status: Open -Assigned To: stas +Assigned To:
 [2018-04-16 11:12 UTC] christian dot wirkus at sport1 dot de
homebrew-php is deprecated and the problem persists
https://github.com/Homebrew/homebrew-php

$ pecl install intl
...
Specify where ICU libraries and headers can be found [DEFAULT] : /usr/local/opt/icu4c
...
running: make
/bin/sh /private/tmp/pear/install/pear-build-cwirkusZ8im1T/intl-3.0.0/libtool --mode=compile cc -I/usr/local/Cellar/icu4c/61.1/include  -Wno-write-strings -I. -I/private/tmp/pear/install/intl -DPHP_ATOM_INC -I/private/tmp/pear/install/pear-build-cwirkusZ8im1T/intl-3.0.0/include -I/private/tmp/pear/install/pear-build-cwirkusZ8im1T/intl-3.0.0/main -I/private/tmp/pear/install/intl -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/local/Cellar/icu4c/61.1/include  -DHAVE_CONFIG_H  -g -O2   -c /private/tmp/pear/install/intl/php_intl.c -o php_intl.lo
mkdir .libs
 cc -I/usr/local/Cellar/icu4c/61.1/include -Wno-write-strings -I. -I/private/tmp/pear/install/intl -DPHP_ATOM_INC -I/private/tmp/pear/install/pear-build-cwirkusZ8im1T/intl-3.0.0/include -I/private/tmp/pear/install/pear-build-cwirkusZ8im1T/intl-3.0.0/main -I/private/tmp/pear/install/intl -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/local/Cellar/icu4c/61.1/include -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/install/intl/php_intl.c  -fno-common -DPIC -o .libs/php_intl.o
In file included from /private/tmp/pear/install/intl/php_intl.c:25:
In file included from /private/tmp/pear/install/intl/php_intl.h:34:
/private/tmp/pear/install/intl/intl_error.h:24:10: fatal error: 'ext/standard/php_smart_str.h' file not found
#include <ext/standard/php_smart_str.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [Makefile:194: php_intl.lo] Error 1
ERROR: `make' failed
 [2018-04-16 11:36 UTC] cmb@php.net
-Status: Open +Status: Wont fix -Assigned To: +Assigned To: cmb
 [2018-04-16 11:36 UTC] cmb@php.net
PECL/intl has been superseeded by the bundled ext/intl. If your
distro does not support it, either request that it does, or build
your own PHP.
 [2018-07-15 09:04 UTC] kamal dot essajidi at gmail dot com
Have no idea if this is the right way but worked for me

in my php source code folder I did this link

ln -s  ext/standard/php_smart_string.h ext/standard/php_smart_str.h

and now it compiles.
 [2018-10-06 20:06 UTC] szekelygobe at gmail dot com
Still having this problem.
The ln -s  ext/standard/php_smart_string.h ext/standard/php_smart_str.h
workaround did not work for me.

Mac OS X Mojave
PHP 7.1.19 (cli) (built: Aug 17 2018 18:03:17) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Nov 29 11:01:30 2024 UTC