Closed shehi closed 6 years ago
The related excerpt from my Dockerfile, if you need it:
# Fetch and compile v8
RUN cd /tmp \
&& fetch v8 \
&& cd v8 \
&& tools/dev/v8gen.py -vv x64.release -- is_component_build=true \
&& ninja -C out.gn/x64.release/ \
&& mkdir -p /opt/v8/lib \
&& mkdir -p /opt/v8/include \
&& cp out.gn/x64.release/lib*.so out.gn/x64.release/*_blob.bin out.gn/x64.release/icudtl.dat /opt/v8/lib/ \
&& cp -R include/* /opt/v8/include/
# Compile php-v8js
RUN git clone --depth=1 -b 1.4.1 https://github.com/phpv8/v8js.git /tmp/v8js \
&& cd /tmp/v8js \
&& phpize \
&& ./configure --with-v8js=/opt/v8
ENV NO_INTERACTION 1
RUN cd /tmp/v8js \
&& make \
&& ls -l modules \
&& make test \
&& make install
Generally your build works fine. The warnings from php's include files are not critical.
For details what's going wrong with the test look into one of the tests/*.out
files, but as a wild guess it's not correctly catching some exception due to Debian/Ubuntu glibc fluff.
Try passing LDFLAGS="-lstdc++" to the ./configure call
Ok, primarily most of tests PASS, with few fails, output as follows:
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_array_access.cc -o v8js_array_access.lo
mkdir .libs
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_array_access.cc -fPIC -DPIC -o .libs/v8js_array_access.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_class.cc -o v8js_class.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_class.cc -fPIC -DPIC -o .libs/v8js_class.o
In file included from /usr/local/include/php/main/php.h:35:0,
from /tmp/v8js/php_v8js_macros.h:42,
from /tmp/v8js/v8js_class.cc:22:
/tmp/v8js/v8js_class.cc: In function 'void v8js_execute_script(zval*, v8js_script*, long int, long int, size_t, zval**)':
/usr/local/include/php/Zend/zend.h:204:57: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define zend_bailout() _zend_bailout(__FILE__, __LINE__)
^
/tmp/v8js/v8js_class.cc:698:3: note: in expansion of macro 'zend_bailout'
zend_bailout();
^
/tmp/v8js/v8js_class.cc: In function 'void zim_V8Js_executeString(zend_execute_data*, zval*)':
/usr/local/include/php/Zend/zend.h:204:57: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define zend_bailout() _zend_bailout(__FILE__, __LINE__)
^
/tmp/v8js/v8js_class.cc:731:3: note: in expansion of macro 'zend_bailout'
zend_bailout();
^
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_commonjs.cc -o v8js_commonjs.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_commonjs.cc -fPIC -DPIC -o .libs/v8js_commonjs.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_convert.cc -o v8js_convert.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_convert.cc -fPIC -DPIC -o .libs/v8js_convert.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_exceptions.cc -o v8js_exceptions.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_exceptions.cc -fPIC -DPIC -o .libs/v8js_exceptions.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_generator_export.cc -o v8js_generator_export.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_generator_export.cc -fPIC -DPIC -o .libs/v8js_generator_export.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_main.cc -o v8js_main.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_main.cc -fPIC -DPIC -o .libs/v8js_main.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_methods.cc -o v8js_methods.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_methods.cc -fPIC -DPIC -o .libs/v8js_methods.o
/tmp/v8js/v8js_methods.cc: In function 'void v8js_register_methods(v8::Local<v8::ObjectTemplate>, v8js_ctx*)':
/tmp/v8js/v8js_methods.cc:511:30: warning: deprecated conversion from string constant to 'std::vector<char*>::value_type {aka char*}' [-Wwrite-strings]
c->modules_base.push_back("");
^
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_object_export.cc -o v8js_object_export.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_object_export.cc -fPIC -DPIC -o .libs/v8js_object_export.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_timer.cc -o v8js_timer.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_timer.cc -fPIC -DPIC -o .libs/v8js_timer.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_v8.cc -o v8js_v8.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_v8.cc -fPIC -DPIC -o .libs/v8js_v8.o
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_v8object_class.cc -o v8js_v8object_class.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_v8object_class.cc -fPIC -DPIC -o .libs/v8js_v8object_class.o
In file included from /usr/local/include/php/main/php.h:35:0,
from /tmp/v8js/php_v8js_macros.h:42,
from /tmp/v8js/v8js_v8object_class.cc:19:
/tmp/v8js/v8js_v8object_class.cc: In function 'int v8js_v8object_call_method(zend_string*, zend_object*, zend_execute_data*, zval*)':
/usr/local/include/php/Zend/zend.h:204:57: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define zend_bailout() _zend_bailout(__FILE__, __LINE__)
^
/tmp/v8js/v8js_v8object_class.cc:374:3: note: in expansion of macro 'zend_bailout'
zend_bailout();
^
/tmp/v8js/v8js_v8object_class.cc: In function 'void v8js_v8generator_next(v8js_v8generator*)':
/usr/local/include/php/Zend/zend.h:204:57: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define zend_bailout() _zend_bailout(__FILE__, __LINE__)
^
/tmp/v8js/v8js_v8object_class.cc:582:3: note: in expansion of macro 'zend_bailout'
zend_bailout();
^
/bin/bash /tmp/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_variables.cc -o v8js_variables.lo
g++ -std=c++11 -I. -I/tmp/v8js -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -c /tmp/v8js/v8js_variables.cc -fPIC -DPIC -o .libs/v8js_variables.o
/bin/bash /tmp/v8js/libtool --mode=link cc -DPHP_ATOM_INC -I/tmp/v8js/include -I/tmp/v8js/main -I/tmp/v8js -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/opt/v8/include -I/opt/v8 -DHAVE_CONFIG_H -g -O2 -lstdc++ -Wl,--rpath=/opt/v8/lib -o v8js.la -export-dynamic -avoid-version -prefer-pic -module -rpath /tmp/v8js/modules v8js_array_access.lo v8js_class.lo v8js_commonjs.lo v8js_convert.lo v8js_exceptions.lo v8js_generator_export.lo v8js_main.lo v8js_methods.lo v8js_object_export.lo v8js_timer.lo v8js_v8.lo v8js_v8object_class.lo v8js_variables.lo -lv8_libplatform -Wl,-rpath,/opt/v8/lib -L/opt/v8/lib -lv8
cc -shared .libs/v8js_array_access.o .libs/v8js_class.o .libs/v8js_commonjs.o .libs/v8js_convert.o .libs/v8js_exceptions.o .libs/v8js_generator_export.o .libs/v8js_main.o .libs/v8js_methods.o .libs/v8js_object_export.o .libs/v8js_timer.o .libs/v8js_v8.o .libs/v8js_v8object_class.o .libs/v8js_variables.o -lstdc++ -lv8_libplatform -L/opt/v8/lib -lv8 -Wl,--rpath=/opt/v8/lib -Wl,-rpath -Wl,/opt/v8/lib -Wl,-soname -Wl,v8js.so -o .libs/v8js.so
creating v8js.la
(cd .libs && rm -f v8js.la && ln -s ../v8js.la v8js.la)
/bin/bash /tmp/v8js/libtool --mode=install cp ./v8js.la /tmp/v8js/modules
cp ./.libs/v8js.so /tmp/v8js/modules/v8js.so
cp ./.libs/v8js.lai /tmp/v8js/modules/v8js.la
PATH="$PATH:/sbin" ldconfig -n /tmp/v8js/modules
----------------------------------------------------------------------
Libraries have been installed in:
/tmp/v8js/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
Don't forget to run 'make test'.
total 2640
-rw-r--r-- 1 root root 804 Nov 21 11:01 v8js.la
-rwxr-xr-x 1 root root 2696640 Nov 21 11:01 v8js.so
Build complete.
Don't forget to run 'make test'.
=====================================================================
PHP : /usr/local/bin/php
PHP_SAPI : cli
PHP_VERSION : 7.1.11
ZEND_VERSION: 3.1.0
PHP_OS : Linux - Linux 84c75d534785 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64
INI actual : /tmp/v8js/tmp-php.ini
More .INIs :
---------------------------------------------------------------------
PHP : /usr/local/bin/phpdbg
PHP_SAPI : phpdbg
PHP_VERSION : 7.1.11
ZEND_VERSION: 3.1.0
PHP_OS : Linux - Linux 84c75d534785 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64
INI actual : /tmp/v8js/tmp-php.ini
More .INIs :
---------------------------------------------------------------------
CWD : /tmp/v8js
Extra dirs :
VALGRIND : Not used
=====================================================================
TIME START 2017-11-21 11:01:57
=====================================================================
PASS Test V8::executeString() : Check ArrayAccess interface wrapping [tests/array_access.phpt]
PASS Test V8::executeString() : Check ArrayAccess live binding [tests/array_access_001.phpt]
PASS Test V8::executeString() : Use ArrayAccess with JavaScript native push method [tests/array_access_002.phpt]
PASS Test V8::executeString() : Export PHP methods on ArrayAccess objects [tests/array_access_003.phpt]
PASS Test V8::executeString() : Export PHP properties on ArrayAccess objects [tests/array_access_004.phpt]
PASS Test V8::executeString() : Export __invoke method on ArrayAccess objects [tests/array_access_005.phpt]
PASS Test V8::executeString() : Enumerate ArrayAccess keys [tests/array_access_006.phpt]
PASS Test V8::executeString() : Delete (unset) ArrayAccess keys [tests/array_access_007.phpt]
PASS Test V8::executeString() : in array (isset) behaviour of ArrayAccess [tests/array_access_008.phpt]
PASS Test V8::executeString() : Check array access setter behaviour [tests/array_access_basic2.phpt]
PASS Test V8::executeString() : Check passing array from JS to PHP [tests/array_pass.phpt]
PASS Test V8::executeString() : Check passing array from JS to PHP (using force array flag) [tests/array_pass_flags.phpt]
PASS Test V8::executeString() : Simple test [tests/basic.phpt]
PASS Test V8::executeString() : Call JS from PHP [tests/callbacks.phpt]
PASS Test V8::executeString() : Script validator test [tests/checkstring.phpt]
PASS Test V8::executeString() : Script validator test using compileString [tests/checkstring_compile.phpt]
PASS Test V8::executeString() : Simple test [tests/closures_basic.phpt]
PASS Test V8::executeString() : Dynamic closure call test [tests/closures_dynamic.phpt]
PASS Test V8Js::setModuleLoader : Returned modules are cached [tests/commonjs_caching_001.phpt]
PASS Test V8Js::setModuleLoader : module cache seperated per isolate [tests/commonjs_caching_002.phpt]
PASS Test V8Js::setModuleNormaliser : Custom normalisation #001 [tests/commonjs_cust_normalise_001.phpt]
PASS Test V8Js::setModuleNormaliser : Custom normalisation #002 [tests/commonjs_cust_normalise_002.phpt]
PASS Test V8Js::setModuleNormaliser : Custom normalisation #003 [tests/commonjs_cust_normalise_003.phpt]
PASS Test V8Js::setModuleNormaliser : Custom normalisation #004 [tests/commonjs_cust_normalise_004.phpt]
PASS Test V8Js::setModuleLoader : Handle fatal errors gracefully [tests/commonjs_fatal_error.phpt]
PASS Test V8Js::setModuleLoader : CommonJS modules [tests/commonjs_modules.phpt]
PASS Test V8Js::setModuleLoader : Assign result multiple times [tests/commonjs_multiassign.phpt]
PASS Test V8Js::setModuleLoader : Path normalisation #001 [tests/commonjs_normalise_001.phpt]
PASS Test V8Js::setModuleLoader : Path normalisation #002 [tests/commonjs_normalise_002.phpt]
PASS Test V8Js::setModuleLoader : Path normalisation #003 [tests/commonjs_normalise_003.phpt]
PASS Test V8Js::setModuleLoader : Path normalisation #004 [tests/commonjs_normalise_004.phpt]
PASS Test V8Js::setModuleLoader : Path normalisation #005 [tests/commonjs_normalise_005.phpt]
PASS Test V8Js::setModuleLoader : Module source naming [tests/commonjs_source_naming.phpt]
PASS Test V8::compileString() : Compile and run a script [tests/compile_string.phpt]
PASS Test V8::compileString() : Check compiled script isolate processing [tests/compile_string_isolate.phpt]
PASS Test V8::executeString() : Calling construct twice [tests/construct.phpt]
PASS Test V8::executeString() : test context preserving [tests/context_preserving.phpt]
PASS Test V8::executeString() : test context separation [tests/context_separation.phpt]
PASS Test V8::executeString() : correct temp context construction [tests/context_temp_creation.phpt]
PASS Test V8Js::createSnapshot() : Basic snapshot creation & re-use [tests/create_snapshot_basic.phpt]
PASS Test V8::executeString() : Testing lifespan of V8Js context objects [tests/ctx_lifetime.phpt]
PASS Test V8::executeString() : Pass JS date to PHP [tests/datetime_pass.phpt]
PASS Test V8::executeString() : Properties on derived class [tests/derived_class_properties.phpt]
PASS Test V8::executeString() : Extra properties on derived class [tests/derived_class_properties_extra.phpt]
PASS Test V8::executeString() : Initialized properties on derived class [tests/derived_class_properties_init.phpt]
PASS Test V8::executeString() : Protected and private properties on derived class [tests/derived_class_properties_protected.phpt]
PASS Test V8::executeString() : Handle die() gracefully [tests/die.phpt]
PASS Test V8::executeString() : direct construction is prohibited [tests/direct_construct.phpt]
PASS Test V8::executeString() : V8JsScriptException [tests/exception.phpt]
PASS Test V8::executeString() : Exception clearing test [tests/exception_clearing.phpt]
PASS Test V8::executeString() : Exception propagation test 1 [tests/exception_propagation_1.phpt]
PASS Test V8::executeString() : Exception propagation test 2 [tests/exception_propagation_2.phpt]
PASS Test V8::executeString() : Exception propagation test 3 [tests/exception_propagation_3.phpt]
PASS Test V8::executeString() : Test getJsStartColumn on script exception [tests/exception_start_column.phpt]
PASS Test V8::executeString() : Forcing to arrays (return value conversion) [tests/execute_flags.phpt]
PASS Test V8::executeString() : Forcing to arrays (argument passing) [tests/execute_flags_args.phpt]
PASS Test V8::executeString() : Forcing to arrays (property writing) [tests/execute_flags_property_writing.phpt]
PASS Test V8::registerExtension() : Basic extension registering [tests/extensions_basic.phpt]
PASS Test V8::registerExtension() : Circular dependencies [tests/extensions_circular_dependency.phpt]
PASS Test V8::registerExtension() : Register extension with errors [tests/extensions_error.phpt]
PASS Test V8::executeString() : Fatal Error handler to ignore warnings [tests/fatal_error_ignore_non_fatals.phpt]
PASS Test V8::executeString() : Fatal Error handler not to uninstall on inner frames [tests/fatal_error_no_uninstall_inner_frame.phpt]
PASS Test V8::executeString() : Fatal Error with recursive executeString calls [tests/fatal_error_recursive.phpt]
PASS Test V8::executeString() : Fatal Error rethrowing [tests/fatal_error_rethrow.phpt]
PASS Test V8::executeString() : Fatal Error handler must be uninstalled when leaving outermost frame [tests/fatal_error_uninstall_in_first_frame.phpt]
PASS Test V8Function() : Handle fatal errors gracefully [tests/fatal_error_v8function.phpt]
PASS Test V8::executeString() : Call passed-back function (directly) [tests/function_call.phpt]
PASS Test V8::executeString() : Call passed-back function [tests/function_passback.phpt]
PASS Test V8::executeString() : Call passed-back function (property access) [tests/function_passback2.phpt]
PASS Test V8::executeString() : Set property on function [tests/function_properties.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (foreach) [tests/generators_from_v8_001.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (direct) [tests/generators_from_v8_002.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (rewind) [tests/generators_from_v8_003.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + foreach) [tests/generators_from_v8_004.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + iterate in JS) [tests/generators_from_v8_005.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (yield from) [tests/generators_from_v8_006.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (throw JS) [tests/generators_from_v8_007.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (throw PHP) [tests/generators_from_v8_008.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (fatal error) [tests/generators_from_v8_009.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP (properties) [tests/generators_from_v8_010.phpt]
PASS Test V8::executeString() : Generators V8 -> PHP [tests/generators_from_v8_basic.phpt]
PASS Test V8::executeString() : Generators PHP -> V8 (instantite in JS) [tests/generators_to_v8_001.phpt]
PASS Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP) [tests/generators_to_v8_002.phpt]
PASS Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP) [tests/generators_to_v8_003.phpt]
PASS Test V8::executeString() : Generators PHP -> V8 (yield from) [tests/generators_to_v8_004.phpt]
PASS Test V8::executeString() : Generators PHP -> V8 [tests/generators_to_v8_basic.phpt]
PASS Test V8::executeString() : PHP variables via get accessor [tests/get_accessor.phpt]
PASS Test V8::executeString() : Get constructor method [tests/get_constructor.phpt]
PASS Test V8::executeString() : has_property after dispose [tests/has_property_after_dispose.phpt]
PASS Test V8Js : class inheritance [tests/inheritance_basic.phpt]
PASS Test V8::executeString() : Issue #116 V8Function injection into other V8Js [tests/issue_116-v8function-injection.phpt]
PASS Test V8Function::__call() : Check v8::TryCatch behaviour [tests/issue_127_001.phpt]
PASS Test V8::executeString() : Backwards compatibility for issue #156 [tests/issue_156_001.phpt]
PASS Test V8::executeString() : Issue #160 V8Function affected by V8Js::FLAG_FORCE_ARRAY [tests/issue_160_basic.phpt]
PASS Test V8::executeString() : Method access on derived classes (protected) [tests/issue_183_001.phpt]
PASS Test V8::executeString() : Method access on derived classes (private) [tests/issue_183_002.phpt]
PASS Test V8::executeString() : Method access on derived classes (V8Js methods) [tests/issue_183_003.phpt]
PASS Test V8::executeString() : Method access on derived classes (overridden V8Js methods) [tests/issue_183_004.phpt]
PASS Test V8::executeString() : Method access on derived classes (__sleep) [tests/issue_183_005.phpt]
PASS Test V8::executeString() : Method access on derived classes (__wakeup) [tests/issue_183_006.phpt]
PASS Test V8::executeString() : Method access on derived classes [tests/issue_183_basic.phpt]
PASS Test V8::executeString() : Issue #185 this on direct invocation of method [tests/issue_185_001.phpt]
PASS Test V8::executeString() : Issue #185 this on function invocation [tests/issue_185_002.phpt]
PASS Test V8::executeString() : Issue #185 Wrong this on V8Object method invocation [tests/issue_185_basic.phpt]
PASS Test V8::executeString() : Handle Z_TYPE == IS_REFERENCE (issue #246) [tests/issue_246_001.phpt]
PASS Test V8::executeString() : Issue #250 (early free of array) [tests/issue_250_001.phpt]
PASS Test V8::executeString() : Issue #250 (early free of array) [tests/issue_250_002.phpt]
PASS Test V8::executeString() : Issue #306 V8 crashing on toLocaleString() [tests/issue_306_basic.phpt]
PASS Test V8::executeString() : Issue #316 endless property iteration [tests/issue_316_basic.phpt]
PASS Test V8::executeString() : Test PHP object construction controlled by JavaScript (simple) [tests/js-construct-basic.phpt]
PASS Test V8::executeString() : Test PHP object construction controlled by JavaScript (non-construction call) [tests/js-construct-direct-call.phpt]
PASS Test V8::executeString() : Test PHP object construction controlled by JavaScript (protected ctor) [tests/js-construct-protected-ctor.phpt]
PASS Test V8::executeString() : Test PHP object construction controlled by JavaScript (with ctor) [tests/js-construct-with-ctor.phpt]
PASS Test V8::executeString() : Test for leaked PHP object if passed back multiple times [tests/leak-php-object.phpt]
PASS Test V8::executeString() : Check long integer handling from PHP to JS [tests/long.phpt]
PASS Test V8::executeString() : Check long 64-bit export from PHP to JS [tests/long_int64.phpt]
PASS Test V8::executeString() : Memory limit [tests/memory_limit.phpt]
PASS Test V8::executeString() : Use multiple V8js instances with objects [tests/multi-object.phpt]
PASS Test V8::executeString() : Use multiple V8js instances [tests/multi.phpt]
PASS Test V8::executeString() : Pass strings with null-bytes [tests/null_byte_string.phpt]
FAIL Test V8::executeString() : Object passed from PHP [tests/object.phpt]
PASS Test V8::executeString() : DOM object passed from PHP [tests/object_dom.phpt]
PASS Test V8::executeString() : Calling methods of object passed from PHP [tests/object_method_call.phpt]
PASS Test V8::executeString() : Object passing PHP > JS > PHP [tests/object_passback.phpt]
PASS Test V8::executeString() : Object passing JS > PHP > JS [tests/object_passback_002.phpt]
PASS Test V8::executeString() : Prototype with PHP callbacks [tests/object_prototype.phpt]
PASS Test V8::executeString() : Test PHP object reusage [tests/object_reuse.phpt]
PASS Test V8::executeString() : PHP Exception handling (repeated) [tests/php_exceptions_001.phpt]
PASS Test V8::executeString() : PHP Exception handling (multi-level) [tests/php_exceptions_002.phpt]
PASS Test V8::executeString() : PHP Exception handling (basic JS propagation) [tests/php_exceptions_003.phpt]
PASS Test V8::executeString() : PHP Exception handling (PHP->JS->PHP back propagation) [tests/php_exceptions_004.phpt]
PASS Test V8::executeString() : PHP Exception handling (JS throw PHP-exception) [tests/php_exceptions_005.phpt]
PASS Test V8::executeString() : PHP Exception handling (JS throws normal PHP-object) [tests/php_exceptions_006.phpt]
PASS Test V8::executeString() : PHP Exception handling (basic) [tests/php_exceptions_basic.phpt]
PASS Test V8::executeString() : property_exists/isset/empty on wrapped JS objects [tests/property_exists.phpt]
PASS Test V8::executeString() : Property visibility - delete [tests/property_visibility-delete.phpt]
FAIL Test V8::executeString() : Property visibility - enumerate [tests/property_visibility-enumerate.phpt]
PASS Test V8::executeString() : Property visibility - has property [tests/property_visibility-has-property.phpt]
PASS Test V8::executeString() : Property visibility - set [tests/property_visibility-set.phpt]
PASS Test V8::executeString() : Property visibility [tests/property_visibility.phpt]
PASS Test V8::executeString() : Property visibility __get [tests/property_visibility__get.phpt]
PASS Test V8::executeString() : Property visibility __set [tests/property_visibility__set.phpt]
SKIP Test V8::executeString() : Pthreads test #1 [tests/pthreads_001.phpt] reason: pthreads extension required
PASS Test V8::executeString() : Regression #121 Z_ADDREF_P [tests/regression_121.phpt]
PASS Test V8::executeString() : return this (aka fluent setters, JS-side) [tests/return_this_001.phpt]
PASS Test V8::executeString() : return $this (aka fluent setters) [tests/return_this_basic.phpt]
PASS Test V8::executeString() : Return values [tests/return_value.phpt]
PASS Test serialize(V8Object) : __sleep and __wakeup throw [tests/serialize_001.phpt]
PASS Test serialize(V8Function) : __sleep and __wakeup throw [tests/serialize_002.phpt]
PASS Test serialize(V8Js) : __sleep and __wakeup throw [tests/serialize_basic.phpt]
PASS Test V8::setAverageObjectSize() : Average object size can be set on V8Js object [tests/set_average_object_size_basic.phpt]
PASS Test V8::setMemoryLimit() : Memory limit applied to V8Function calls [tests/set_memory_limit_001.phpt]
PASS Test V8::setMemoryLimit() : Memory limit can be imposed later [tests/set_memory_limit_003.phpt]
PASS Test V8::setMemoryLimit() : Memory limit can be set on V8Js object [tests/set_memory_limit_basic.phpt]
PASS Test V8::setTimeLimit() : Time limit applied to V8Function calls [tests/set_time_limit_001.phpt]
PASS Test V8::setTimeLimit() : Time limit can be changed [tests/set_time_limit_002.phpt]
PASS Test V8::setTimeLimit() : Time limit can be imposed later on [tests/set_time_limit_003.phpt]
PASS Test V8::setTimeLimit() : Time limit can be prolonged [tests/set_time_limit_004.phpt]
PASS Test V8::setTimeLimit() : Time limit can be set on V8Js object [tests/set_time_limit_basic.phpt]
PASS Test V8::executeString() : Time limit [tests/time_limit.phpt]
PASS Test V8::executeString() : Check timezone handling [tests/timezones.phpt]
PASS Test V8::executeString() : Use after dispose [tests/use_after_dispose.phpt]
PASS Test V8::executeString() : unset property on V8Object [tests/v8_unset_property.phpt]
PASS Test V8::executeString() : write property on V8Object [tests/v8_write_property.phpt]
FAIL Test V8::executeString() : var_dump [tests/var_dump.phpt]
PASS Test V8::executeString() : simple variables passed from PHP [tests/variable_passing.phpt]
=====================================================================
TIME END 2017-11-21 11:02:04
=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped : 0
Exts tested : 33
---------------------------------------------------------------------
Number of tests : 166 165
Tests skipped : 1 ( 0.6%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 3 ( 1.8%) ( 1.8%)
Expected fail : 0 ( 0.0%) ( 0.0%)
Tests passed : 162 ( 97.6%) ( 98.2%)
---------------------------------------------------------------------
Time taken : 7 seconds
=====================================================================
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Test V8::executeString() : Object passed from PHP [tests/object.phpt]
Test V8::executeString() : Property visibility - enumerate [tests/property_visibility-enumerate.phpt]
Test V8::executeString() : var_dump [tests/var_dump.phpt]
=====================================================================
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20160303/
Thoughts? Ignorable?
Thing is, after doing:
RUN ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20160303/ \
&& php -m
I get this output:
total 6680
-rwxr-xr-x 1 root staff 44616 Nov 21 10:19 bcmath.so
-rwxr-xr-x 1 root staff 41888 Nov 21 10:19 calendar.so
-rwxr-xr-x 1 root staff 71456 Nov 21 10:19 exif.so
-rwxr-xr-x 1 root staff 445048 Nov 21 10:20 gd.so
-rwxr-xr-x 1 root staff 20592 Nov 21 10:19 gettext.so
-rwxr-xr-x 1 root staff 1588360 Nov 21 10:19 mbstring.so
-rwxr-xr-x 1 root staff 54944 Nov 21 10:19 mcrypt.so
-rwxr-xr-x 1 root staff 657264 Nov 4 10:16 opcache.a
-rwxr-xr-x 1 root staff 418296 Nov 4 10:16 opcache.so
-rwxr-xr-x 1 root staff 34968 Nov 21 10:19 pdo_mysql.so
-rwxr-xr-x 1 root staff 54920 Nov 21 10:19 pdo_pgsql.so
-rwxr-xr-x 1 root staff 347120 Nov 21 10:19 soap.so
-rwxr-xr-x 1 root staff 107624 Nov 21 10:20 sockets.so
-rwxr-xr-x 1 root staff 2696640 Nov 21 11:02 v8js.so
-rwxr-xr-x 1 root staff 43544 Nov 21 10:20 xsl.so
-rwxr-xr-x 1 root staff 178736 Nov 21 10:20 zip.so
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
zip
zlib
[Zend Modules]
Can't see v8js
there. Any idea what's wrong?
Example cat tests/object.log
result:
---- EXPECTED OUTPUT
mytest => function () { [native code] }
$foo => ORIGINAL
Here be monsters..
CHANGED
string(7) "CHANGED"
===EOF===
---- ACTUAL OUTPUT
$foo => ORIGINAL
Here be monsters..
CHANGED
string(7) "CHANGED"
===EOF===
---- FAILED
cat tests/property_visibility-enumerate.log
:
---- EXPECTED OUTPUT
string(4) "dump"
string(8) "function"
string(7) "$pubBar"
string(6) "pubBar"
--- PHP ---
privBar => string(7) "privBar"
protBar => string(7) "protBar"
pubBar => string(6) "pubBar"
===EOF===
---- ACTUAL OUTPUT
string(7) "$pubBar"
string(6) "pubBar"
--- PHP ---
privBar => string(7) "privBar"
protBar => string(7) "protBar"
pubBar => string(6) "pubBar"
===EOF===
---- FAILED
cat tests/var_dump.log
:
---- EXPECTED OUTPUT
---- PHP var_dump of PHP object ----
array(11) {
["null"]=>
NULL
["bool"]=>
bool(true)
["string"]=>
string(6) "string"
["uint"]=>
int(1)
["int"]=>
int(-1)
["number"]=>
float(3.141592654)
["date"]=>
object(DateTime)#%d (3) {
["date"]=>
string(%d) "1976-09-27 09:00:00%r(\.0+)?%r"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["array"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["object"]=>
array(1) {
["field"]=>
string(3) "foo"
}
["function"]=>
object(Closure)#%d (1) {
["parameter"]=>
array(1) {
["$x"]=>
string(10) "<required>"
}
}
["phpobject"]=>
object(Foo)#%d (1) {
["field"]=>
string(3) "php"
}
}
--- JS var_dump of PHP object ----
array (11) {
["null"] =>
NULL
["bool"] =>
bool(true)
["string"] =>
string(6) "string"
["uint"] =>
int(1)
["int"] =>
int(-1)
["number"] =>
float(3.141593)
["date"] =>
object(DateTime)#%d (18) {
["createFromFormat"] =>
object(Closure)#%d {
function () { [native code] }
}
["getLastErrors"] =>
object(Closure)#%d {
function () { [native code] }
}
["format"] =>
object(Closure)#%d {
function () { [native code] }
}
["modify"] =>
object(Closure)#%d {
function () { [native code] }
}
["add"] =>
object(Closure)#%d {
function () { [native code] }
}
["sub"] =>
object(Closure)#%d {
function () { [native code] }
}
["getTimezone"] =>
object(Closure)#%d {
function () { [native code] }
}
["setTimezone"] =>
object(Closure)#%d {
function () { [native code] }
}
["getOffset"] =>
object(Closure)#%d {
function () { [native code] }
}
["setTime"] =>
object(Closure)#%d {
function () { [native code] }
}
["setDate"] =>
object(Closure)#%d {
function () { [native code] }
}
["setISODate"] =>
object(Closure)#%d {
function () { [native code] }
}
["setTimestamp"] =>
object(Closure)#%d {
function () { [native code] }
}
["getTimestamp"] =>
object(Closure)#%d {
function () { [native code] }
}
["diff"] =>
object(Closure)#%d {
function () { [native code] }
}
["$date"] =>
string(%d) "1976-09-27 09:00:00%r(\.0+)?%r"
["$timezone_type"] =>
int(3)
["$timezone"] =>
string(3) "UTC"
}
["array"] =>
array(3) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(3)
}
["object"] =>
array (1) {
["field"] =>
string(3) "foo"
}
["function"] =>
object(Closure)#%d (0) {
}
["phpobject"] =>
object(Foo)#%d (1) {
["$field"] =>
string(3) "php"
}
}
--- JS var_dump of JS object ----
object(Object)#%d (12) {
["undefined"] =>
NULL
["null"] =>
NULL
["bool"] =>
bool(true)
["string"] =>
string(6) "string"
["uint"] =>
int(1)
["int"] =>
int(-1)
["number"] =>
float(3.141593)
["regexp"] =>
regexp(/regexp/)
["array"] =>
array(3) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(3)
}
["object"] =>
object(Object)#%d (1) {
["field"] =>
string(3) "foo"
}
["function"] =>
object(Closure)#%d {
function id(x) { return x; }
}
["phpobject"] =>
object(Foo)#%d (1) {
["$field"] =>
string(3) "php"
}
}
--- PHP var_dump of JS object ----
object(V8Object)#%d (12) {
["undefined"]=>
NULL
["null"]=>
NULL
["bool"]=>
bool(true)
["string"]=>
string(6) "string"
["uint"]=>
int(1)
["int"]=>
int(-1)
["number"]=>
float(3.141592654)
["regexp"]=>
object(V8Object)#%d (0) {
}
["array"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["object"]=>
object(V8Object)#%d (1) {
["field"]=>
string(3) "foo"
}
["function"]=>
object(V8Function)#%d (0) {
}
["phpobject"]=>
object(Foo)#%d (1) {
["field"]=>
string(3) "php"
}
}
===EOF===
---- ACTUAL OUTPUT
---- PHP var_dump of PHP object ----
array(11) {
["null"]=>
NULL
["bool"]=>
bool(true)
["string"]=>
string(6) "string"
["uint"]=>
int(1)
["int"]=>
int(-1)
["number"]=>
float(3.141592654)
["date"]=>
object(DateTime)#3 (3) {
["date"]=>
string(26) "1976-09-27 09:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["array"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["object"]=>
array(1) {
["field"]=>
string(3) "foo"
}
["function"]=>
object(Closure)#4 (1) {
["parameter"]=>
array(1) {
["$x"]=>
string(10) "<required>"
}
}
["phpobject"]=>
object(Foo)#5 (1) {
["field"]=>
string(3) "php"
}
}
--- JS var_dump of PHP object ----
array (11) {
["null"] =>
NULL
["bool"] =>
bool(true)
["string"] =>
string(6) "string"
["uint"] =>
int(1)
["int"] =>
int(-1)
["number"] =>
float(3.141593)
["date"] =>
object(DateTime)#1836290 (3) {
["$date"] =>
string(26) "1976-09-27 09:00:00.000000"
["$timezone_type"] =>
int(3)
["$timezone"] =>
string(3) "UTC"
}
["array"] =>
array(3) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(3)
}
["object"] =>
array (1) {
["field"] =>
string(3) "foo"
}
["function"] =>
object(Closure)#2032 (0) {
}
["phpobject"] =>
object(Foo)#1770961 (1) {
["$field"] =>
string(3) "php"
}
}
--- JS var_dump of JS object ----
object(Object)#1958833 (12) {
["undefined"] =>
NULL
["null"] =>
NULL
["bool"] =>
bool(true)
["string"] =>
string(6) "string"
["uint"] =>
int(1)
["int"] =>
int(-1)
["number"] =>
float(3.141593)
["regexp"] =>
regexp(/regexp/)
["array"] =>
array(3) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(3)
}
["object"] =>
object(Object)#2038975 (1) {
["field"] =>
string(3) "foo"
}
["function"] =>
object(Closure)#1312249 {
function id(x) { return x; }
}
["phpobject"] =>
object(Foo)#1014788 (1) {
["$field"] =>
string(3) "php"
}
}
--- PHP var_dump of JS object ----
object(V8Object)#6 (12) {
["undefined"]=>
NULL
["null"]=>
NULL
["bool"]=>
bool(true)
["string"]=>
string(6) "string"
["uint"]=>
int(1)
["int"]=>
int(-1)
["number"]=>
float(3.141592654)
["regexp"]=>
object(V8Object)#7 (0) {
}
["array"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["object"]=>
object(V8Object)#8 (1) {
["field"]=>
string(3) "foo"
}
["function"]=>
object(V8Function)#9 (0) {
}
["phpobject"]=>
object(Foo)#2 (1) {
["field"]=>
string(3) "php"
}
}
===EOF===
---- FAILED
Uhm, after:
RUN echo "zend_extension=v8js.so" | tee /usr/local/etc/php/conf.d/v8js.ini \
&& ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20160303/ \
&& php -m
My output is:
total 6680
-rwxr-xr-x 1 root staff 44616 Nov 21 10:19 bcmath.so
-rwxr-xr-x 1 root staff 41888 Nov 21 10:19 calendar.so
-rwxr-xr-x 1 root staff 71456 Nov 21 10:19 exif.so
-rwxr-xr-x 1 root staff 445048 Nov 21 10:20 gd.so
-rwxr-xr-x 1 root staff 20592 Nov 21 10:19 gettext.so
-rwxr-xr-x 1 root staff 1588360 Nov 21 10:19 mbstring.so
-rwxr-xr-x 1 root staff 54944 Nov 21 10:19 mcrypt.so
-rwxr-xr-x 1 root staff 657264 Nov 4 10:16 opcache.a
-rwxr-xr-x 1 root staff 418296 Nov 4 10:16 opcache.so
-rwxr-xr-x 1 root staff 34968 Nov 21 10:19 pdo_mysql.so
-rwxr-xr-x 1 root staff 54920 Nov 21 10:19 pdo_pgsql.so
-rwxr-xr-x 1 root staff 347120 Nov 21 10:19 soap.so
-rwxr-xr-x 1 root staff 107624 Nov 21 10:20 sockets.so
-rwxr-xr-x 1 root staff 2696640 Nov 21 11:19 v8js.so
-rwxr-xr-x 1 root staff 43544 Nov 21 10:20 xsl.so
-rwxr-xr-x 1 root staff 178736 Nov 21 10:20 zip.so
/usr/local/lib/php/extensions/no-debug-non-zts-20160303/v8js.so doesn't appear to be a valid Zend extension
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
zip
zlib
[Zend Modules]
Note this part in there: /usr/local/lib/php/extensions/no-debug-non-zts-20160303/v8js.so doesn't appear to be a valid Zend extension
v8js is an extension not a zend-extension, hence you need to load it with extension=v8js.so
and not zend_extension..
... and the three failing tests are caused by you missing changes from https://github.com/phpv8/v8js/pull/328; you're using release 1.4.1 which doesn't include that in combination with pretty new V8 version
Much obliged for the support @stesie , fixed now.
Hi there,
After following your instructions at https://github.com/phpv8/v8js/blob/php7/README.Linux.md I can't get the make phase work.
My v8 installations seems to work:
Yes, I am using Docker, so SHELL it uses clearly is SH not BASH.
./configure
phase, which seems to have no problems, has the following output:However
make
phase fails with following output:For simplicity, I am getting these errors during
make
:and this:
Any idea how to fix this?