Я пытаюсь построить полностью чистый PHP 7.1 из официальный php-src/PHP-7.1.0
филиал на github с Xcode 8.2.1 на OS X 10.11.6, но я получаю эту ошибку:
make distclean
./configure
...
gawk: fatal: cannot open file `date/*.h*' for reading (No such file or directory)
...
make BR php-7.1
/bin/sh /Users/myusername/Sites/php-src/libtool --silent --preserve-dup-deps --mode=compile gcc -Iext/date/lib -Iext/date/ -I/Users/myusername/Sites/php-src/ext/date/ -DPHP_ATOM_INC -I/Users/myusername/Sites/php-src/include -I/Users/myusername/Sites/php-src/main -I/Users/myusername/Sites/php-src -I/Users/myusername/Sites/php-src/ext/date/lib -I/Users/myusername/Sites/php-src/ext/ereg/regex -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2 -I/Users/myusername/Sites/php-src/ext/sqlite3/libsqlite -I/Users/myusername/Sites/php-src/TSRM -I/Users/myusername/Sites/php-src/Zend -no-cpp-precomp -I/usr/include -g -O2 -fvisibility=hidden -c /Users/myusername/Sites/php-src/ext/date/php_date.c -o ext/date/php_date.lo
In file included from /Users/myusername/Sites/php-src/ext/date/php_date.c:21:
In file included from /Users/myusername/Sites/php-src/main/php.h:35:
In file included from /Users/myusername/Sites/php-src/Zend/zend.h:31:
In file included from /Users/myusername/Sites/php-src/Zend/zend_types.h:27:
In file included from /Users/myusername/Sites/php-src/Zend/zend_portability.h:52:
In file included from /Users/myusername/Sites/php-src/Zend/../TSRM/TSRM.h:23:
/Users/myusername/Sites/php-src/main/php_stdint.h:172:14: error: typedef redefinition with different types ('long' vs 'long long')
typedef long int64_t;
^
/usr/include/sys/_types/_int64_t.h:30:20: note: previous definition is here
typedef long long int64_t;
^
In file included from /Users/myusername/Sites/php-src/ext/date/php_date.c:21:
In file included from /Users/myusername/Sites/php-src/main/php.h:35:
In file included from /Users/myusername/Sites/php-src/Zend/zend.h:31:
In file included from /Users/myusername/Sites/php-src/Zend/zend_types.h:27:
In file included from /Users/myusername/Sites/php-src/Zend/zend_portability.h:52:
In file included from /Users/myusername/Sites/php-src/Zend/../TSRM/TSRM.h:23:
/Users/myusername/Sites/php-src/main/php_stdint.h:198:23: error: typedef redefinition with different types ('unsigned long' vs 'unsigned long long')
typedef unsigned long uint64_t;
^
/usr/include/_types/_uint64_t.h:31:28: note: previous definition is here
typedef unsigned long long uint64_t;
^
Этот отсутствующий заголовок даты во время конфигурирования выглядит не очень хорошо, но мне не ясно, является ли это локальной проблемой конфигурации или проблемой с исходным кодом PHP. Есть идеи?
Обновить В дополнение к предложениям Л’Л’а я попытался построить другие пути. Сборка из tarball работает, однако, я бы предпочел собрать из git, так как я хочу иметь возможность отправить PR обратно в php-src, и все будет правильно, если я это сделаю. Шаги сборки git не очень счастливы:
./genfiles
Zend/zend_language_parser.y:49.1-5: invalid directive: '%code'
Zend/zend_language_parser.y:49.7-14: syntax error, unexpected identifier
make: *** [Zend/zend_language_parser.c] Error 1
+ CLEANUP_FILES=' ext/pdo/pdo_sql_parser.c ext/date/lib/parse_date.c ext/standard/url_scanner_ex.c ext/standard/var_unserializer.c '
+ for f in '$CLEANUP_FILES'
+ cp ext/pdo/pdo_sql_parser.c ext/pdo/pdo_sql_parser.c.orig
+ grep -v '#line ' ext/pdo/pdo_sql_parser.c.orig
+ for f in '$CLEANUP_FILES'
+ cp ext/date/lib/parse_date.c ext/date/lib/parse_date.c.orig
+ grep -v '#line ' ext/date/lib/parse_date.c.orig
+ for f in '$CLEANUP_FILES'
+ cp ext/standard/url_scanner_ex.c ext/standard/url_scanner_ex.c.orig
+ grep -v '#line ' ext/standard/url_scanner_ex.c.orig
+ for f in '$CLEANUP_FILES'
+ cp ext/standard/var_unserializer.c ext/standard/var_unserializer.c.orig
+ grep -v '#line ' ext/standard/var_unserializer.c.orig
Эта ошибка кажется несмертельной.
./buildconf
You should not run buildconf in a release package.
use buildconf --force to override this check.
Это была проблема с PHP-7.1.0
ветка — master
не показывает эту ошибку.
Чтобы убедиться, что все было полностью чисто, я удалил свой клон и снова начал — и на этот раз ошибка переопределения ушла, и моя сборка теперь работает. В конечном счете, это отвечает на мой вопрос — похоже, это проблема локальной конфигурации, хотя я точно не знаю, что именно.
Я бы порекомендовал попробовать стабильную версию PHP 7.1.0
. При использовании нестабильных версий alpha / beta / dev ожидается возникновение некоторых проблем (техническая версия, которую вы пытаетесь скомпилировать, технически является «нестабильной» 7.2.0). Стабильная версия также содержит все необходимые сценарии сборки, поэтому ее очень легко запустить и запустить.
$ curl --location --output php-7.1.0.tar.gz http://ca3.php.net/get/php-7.1.0.tar.gz/from/this/mirror
$ tar -xzvf php-7.1.0.tar.gz
$ cd php-7.1.0
$ ./configure
$ make
$ make test
Результат испытаний:
=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped : 48
Exts tested : 26
---------------------------------------------------------------------
Number of tests : 15222 10166
Tests skipped : 5056 ( 33.2%) --------
Tests warned : 1 ( 0.0%) ( 0.0%)
Tests failed : 4 ( 0.0%) ( 0.0%)
Expected fail : 35 ( 0.2%) ( 0.3%)
Tests passed : 10126 ( 66.5%) ( 99.6%)
---------------------------------------------------------------------
Time taken : 228 seconds
=====================================================================
PHP_VERSION : 7.1.0
ZEND_VERSION: 3.1.0-dev
PHP_OS : Darwin - Darwin Orion.local 16.3.0 Darwin Kernel Version 16.3.0:
Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
Если вы хотите придерживаться git
Версия единственная разница в компиляции заключается в необходимости заранее генерировать сценарии сборки:
$ git clone https://github.com/php/php-src.git
$ cd php-src
$ ./genfiles
$ ./buildconf
$ ./configure
$ make
$ make test
=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped : 47
Exts tested : 26
---------------------------------------------------------------------
Number of tests : 15223 10218
Tests skipped : 5005 ( 32.9%) --------
Tests warned : 1 ( 0.0%) ( 0.0%)
Tests failed : 3 ( 0.0%) ( 0.0%)
Expected fail : 36 ( 0.2%) ( 0.4%)
Tests passed : 10178 ( 66.9%) ( 99.6%)
---------------------------------------------------------------------
Time taken : 233 seconds
=====================================================================
PHP_VERSION : 7.2.0-dev
ZEND_VERSION: 3.2.0-dev
PHP_OS : Darwin - Darwin Orion.local 16.3.0 Darwin Kernel Version 16.3.0:
Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
Других решений пока нет …