Minimum Requirements - simplepie/simplepie-ng GitHub Wiki
Runtime
At a high level, these are the tools you need to run -- or develop for -- SimplePie NG.
- PHP 7.2+ (curl, intl, opcache, mbstring, xml, zip)
- Composer
NOTE: This document should be considered INFORMATIVE, but not CANONICAL. All canonical RFCs can be found at
simplepie/rfc
.
The better you understand this toolset, the smaller the learning curve you'll experience. The less you understand this toolset, the larger the learning curve you'll experience.
date
For working with dates. Should have an up-to-date timelib
and "Olson" Timezone Database Version on the core system.
Known-good values from php -i
:
date/time support => enabled
timelib version => 2017.05beta9
"Olson" Timezone Database Version => 2017.3
Timezone Database => internal
Default timezone => UTC
dom
All XML parsing is done with DOMDocument
. Should have a modern libxml2
installed, and HTML + XPath support.
Known-good values from php -i
:
DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.9.7
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled
intl
The Internationalization extension simplifies the process of working with feeds from non-UTF-8 character encodings.
Known-good values from php -i
:
Internationalization support => enabled
version => 1.1.0
ICU version => 60.2
ICU Data version => 60.2
ICU TZData version => 2017c
ICU Unicode version => 10.0
Directive => Local Value => Master Value
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0
json
All JSON parsing is done with the built-in json-d
library.
Known-good values from php -i
:
json support => enabled
json version => 1.6.0
libxml
Tested with libxml2 v2.9.7.
Known-good values from php -i
:
libXML support => active
libXML Compiled Version => 2.9.7
libXML Loaded Version => 20907
libXML streams => enabled
mbstring
All string functions in SimplePie NG use the mb_
version.
Known-good values from php -i
:
Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2
oniguruma version => 6.3.0
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
Multibyte (japanese) regex support => enabled
Multibyte regex (oniguruma) backtrack check => On
Multibyte regex (oniguruma) version => 6.3.0
Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.func_overload => 0 => 0
mbstring.http_input => no value => no value
mbstring.http_output => no value => no value
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
mbstring.internal_encoding => no value => no value
mbstring.language => neutral => neutral
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value
opcache
This makes PHP faster.
Known-good values from php -i
:
Opcode Caching => Disabled
Optimization => Disabled
SHM Cache => Enabled
File Cache => Disabled
Startup Failed => Opcode Caching is disabled for CLI
reflection
There is one spot in the type handling where we reflect the middleware to understand which interfaces the type class supports, instead of trying to hard-code known matches.
Known-good values from php -i
:
Reflection => enabled
Version => $Id: 6cf0392a73b8c11a067a885da01dcdb18461c4f4 $
Development
All of the runtime dependencies, plus:
xdebug
Xdebug 2.6.0-alpha1 is the first version of Xdebug which supports PHP 7.2. This is recommended for generating code coverage reports when running tests. It is also useful for producing cachegrind files that can be used to find performance bottlenecks in your code.
It should never, ever, ever, ever, ever be run in production.
Known-good values from php -i
:
xdebug support => enabled
Version => 2.6.0alpha1
IDE Key => rparman
Supported protocols => Revision
DBGp - Common DeBuGger Protocol => $Revision: 1.145 $
Docker and Docker Compose
There are a few development-oriented tasks which can be relatively complex, so I have wrapped those tasks up into Docker containers so that they always run consistently by avoiding environmental differences.
Docker leverages a feature called "containers" that is built into the Linux kernel. Docker runs natively on modern Linux kernels and operating systems. For macOS and Windows, Docker (the company) provides toolkits which -- in essence -- boot up miniature Linux VMs to run Docker (the software) through.
There are different pros and cons to leveraging Docker depending on how your environment is configured. If you're just looking for something quick, Docker for Mac/Windows is a good choice. If you're doing heavy development where I/O performance is important, I would recommend a Vagrant Linux VM running Docker, and using NFS (out of scope for this document).