Предупреждения компиляции PHP7 и Apache

Когда я собирал php 7.0.1, у меня было несколько предупреждений, я надеялся, что это будет исправлено в более новой версии php, но сегодня у меня появилось больше предупреждений с 7.0.2.

6 предупреждений было сгенерировано php_date.c файлы

/Users/username/folder/php/ext/date/php_date.c:2196:6: warning: absolute value function 'abs' given an argument of type 'long long' but has parameter of type 'int' which may cause truncation of value [-Wabsolute-value] abs(utc_offset / 60),
^
/Users/username/folder/php/ext/date/php_date.c:2196:6: note: use function 'llabs' instead abs(utc_offset / 60), ^~~ llabs
6 warnings generated.

1 предупреждение, сгенерированное interval.c

/Users/javidgajievi/Ovlee/php/ext/date/lib/interval.c:73:13: warning: using integer absolute value function 'abs' when argument is of
floating point type [-Wabsolute-value]
rt->days = abs(floor((one->sse - two->sse - (dst_h_corr * 3600) - (dst_m_corr * 60)) / 86400));
^
/Users/javidgajievi/Ovlee/php/ext/date/lib/interval.c:73:13: note: use function 'fabs' instead
rt->days = abs(floor((one->sse - two->sse - (dst_h_corr * 3600) - (dst_m_corr * 60)) / 86400));
^~~
fabs
1 warning generated.

и 1 предупреждение было сгенерировано pthreads

ext/pthreads/src/object.h:41:1: warning: '/*' within block comment [-Wcomment]
/* {{{ */
^

Apache создал больше предупреждений, поэтому я собираюсь перечислить только несколько из них, чтобы дать вам представление о предупреждениях.

mod_authnz_ldap.c:554:50: warning: 'ldap_err2string' is deprecated: first deprecated in OS X 10.11 - use OpenDirectory Framework
[-Wdeprecated-declarations]
user, r->uri, ldc->reason, ldap_err2string(result));
^
/Users/username/folder/apache/include/http_log.h:448:44: note: expanded from macro 'ap_log_rerror'
#define ap_log_rerror(...) ap_log_rerror__(__VA_ARGS__)
^
/Users/username/ovlee/apache/include/http_log.h:451:63: note: expanded from macro 'ap_log_rerror__'
ap_log_rerror_(file, line, mi, level, status, r, __VA_ARGS__); \

Моя конфигурация сборки

PHP

./configure \
--prefix=/Users/username/fodler/php \
--exec-prefix=/Users/username/folder/php \
--with-apxs2=/Users/username/folder/apache/bin/apxs \
--with-config-file-scan-dir=/Users/username/folder/php/lib \
--with-config-file-path=/Users/username/folder/php/lib \
--disable-all \
--enable-maintainer-zts \
--enable-pthreads

апаш

./configure \
--prefix=/Users/username/fodler/apache \
--exec-prefix=/Users/username/folder/apache \
--with-pcre=/Users/username/folder/apache/pcre \
--enable-module=so \
--with-mpm=worker

Поэтому я не собираюсь перечислять все предупреждения, так как думаю, что проблема может быть вызвана моей средой, которая является Mac OSX 10.11.2, xCode 7.2, PHP 7.0.2, APAHCE (Httpd) 2.4.18

Как вы думаете, в чем проблема? как мне исправить это предупреждение?

3

Решение

«Я только хочу знать причину этих предупреждений».
Хорошо, не уверен, если это действительно поможет вам, но здесь мы идем …. 😉

Что касается /Users/username/folder/php/ext/date/php_date.c:2196:6:
Строка кода

abs(utc_offset / 60)

где utc_offset объявлен как timelib_sll utc_offset,
timelib_sll определяется как

#if defined(_MSC_VER)
typedef uint64_t timelib_ull;
typedef int64_t timelib_sll;
# define TIMELIB_LL_CONST(n) n ## i64
#else
typedef unsigned long long timelib_ull;
typedef signed long long timelib_sll;
# define TIMELIB_LL_CONST(n) n ## ll
#endif

в timelib_structs.h и поскольку вы работаете на Mac, _MSC_VER не будет определен и, следовательно, timelib_sll является коротким длинным длинным.
И компилятор жалуется на то, что long long long * передается в функцию, которая ожидает int (который в вашем случае «меньше», чем long long).

Аналогичная вещь с предупреждением для interval.c: 73.

В архиве, который я скачал с php.net, не было каталога ext / pthreads, но предупреждение означает, что кто-то добавил комментарий

/**
lalala
/* {{{ */
*/

в этом файле и компилятор жалуется на вложенный блок комментариев.

Что касается mod_authnz_ldap.c:554:50: warning: 'ldap_err2string' is deprecatedApple хочет, чтобы разработчики использовали другую функцию сейчас. Прямо сейчас Я не знаю какая замена будет.
Следующие два сообщения (содержащие expanded from macro) просто подсказка к источнику; так как он находится в расширении макроса, может быть трудно найти его иначе. (Так как это выглядело как предупреждение CLANG, я посмотрел его и, да: Начиная с Xcode 4.2, Clang является компилятором по умолчанию для Mac OS X. — так что я чему-то научился от этого ;-))


* редактировать и кстати:
следующая строка

abs((utc_offset % 60)))

за что я не получил предупреждение; компилятор достаточно умен, чтобы признать, что что-то по модулю 60 находится в диапазоне значений типа int.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector