Description
WordPress core does not use PHP sessions, but sometimes they are required by your use-case, a plugin or theme.
This plugin implements PHP’s native session handlers, backed by the WordPress database. This allows plugins, themes, and custom code to safely use PHP $_SESSION
s in a distributed environment where PHP’s default tempfile storage just won’t work.
Note that primary development is on GitHub if you would like to contribute:
https://github.com/pantheon-systems/wp-native-php-sessions
Contributing
The best way to contribute to the development of this plugin is by participating on the GitHub project:
https://github.com/pantheon-systems/wp-native-php-sessions
Pull requests and issues are welcome!
You may notice there are two sets of tests running, on two different services:
- Travis CI runs the PHPUnit test suite.
- Circle CI runs the Behat test suite against a Pantheon site, to ensure the plugin’s compatibility with the Pantheon platform.
Both of these test suites can be run locally, with a varying amount of setup.
PHPUnit requires the WordPress PHPUnit test suite, and access to a database with name wordpress_test
. If you haven’t already configured the test suite locally, you can run bash bin/install-wp-tests.sh wordpress_test root '' localhost
.
Behat requires a Pantheon site. Once you’ve created the site, you’ll need install Terminus, and set the TERMINUS_TOKEN
, TERMINUS_SITE
, and TERMINUS_ENV
environment variables. Then, you can run ./bin/behat-prepare.sh
to prepare the site for the test suite.
Odstránenie problémov
If you see an error like „Fatal error: session_start(): Failed to initialize storage module: user (path: ) in …/code/wp-content/plugins/plugin-that-uses-sessions/example.php on line 2“ you likely have a plugin in the mu-plugins directory that is instantiating a session prior to this plugin loading. To fix, you will need to deactivate this plugin and instead load it via an mu-plugin that loads first, e.g. create an mu-plugin called 00.php and add a line in it to include the wp-native-php-sessions/pantheon-sessions.php file and the problem should disappear.
Installation
- Upload to the
/wp-content/plugins/
directory - Aktivujte modul cez položku „Moduly“ v menu vo WordPress
That’s it!
FAQ
- Why not use another session plugin?
-
This implements the built-in PHP session handling functions, rather than introducing anything custom. That way you can use built-in language functions like the
$_SESSION
superglobal andsession_start()
in your code. Everything else will „just work“. - Why store them in the database?
-
PHP’s fallback default functionality is to allow sessions to be stored in a temporary file. This is what most code that invokes sessions uses by default, and in simple use-cases it works, which is why so many plugins do it.
However, if you intend to scale your application, local tempfiles are a dangerous choice. They are not shared between different instances of the application, producing erratic behavior that can be impossible to debug. By storing them in the database the state of the sessions is shared across all application instances.
Reviews
It’s nice enough
Nice plugin it helps me to update my old-school friend – The WordPress.
Awesome Plugin This has resolved server Session Issue
Great!!!!!!!!!
Awesome plugin!
Only good option for session variables
Resolved Plugin Issue
This plugin helped to resolve an issue with the WordPress Social Login plugin.
Contributors & Developers
“WordPress Native PHP Sessions” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “WordPress Native PHP Sessions” into your language.
Interested in development?
Browse the code or subscribe to the development log by RSS.
Changelog
0.6.0 (November 23rd, 2016)
- Bug fix: Prevents PHP fatal error in
session_write_close()
by running on WordPress’shutdown
action, before$wpdb
destructs itself. - Bug fix: Stores the actual user id in the sessions table, instead of
(bool) $user_id
.
0.5
- Compatibility with PHP 7.
- Adds
pantheon_session_expiration
filter to modify session expiration value.
0.4
- Adjustment to
session_id()
behavior for wider compatibility - Using superglobal for REQUEST_TIME as opposed to
time()
0.3
- Fixes issue related to WordPress plugin load order
0.1
- Prvé vydanie