Seiden Group
Modern Development & Open Source for IBM i
  • Link to LinkedIn
  • Link to Mail
  • Home
  • Seiden PHP+
    • Seiden PHP+
    • Install & Learn
    • SmartSupport
    • PHP Migrations & Upgrades
    • Success Stories
    • Free PHP Assessment
    • Documentation
    • What’s New (Changelog)
  • IBM i Services
    • Development
    • Training & Mentoring
    • Open Source Setup & Upgrades
    • SSL/TLS Install & Learn
    • Performance
  • Support
    • Open Source & PHP
    • VS Code for i
    • Developer Support
    • Support Success Stories
  • VS Code for i
    • Support
    • Training
    • Code for i Resource Guide
    • Getting Started Videos
    • Code for IBM i Fridays
  • Free Stuff
    • IBM i Strategy & Tips
    • PHP Upgrade Assessment
    • CNX Valence Assessment
    • VS Code for IBM i Resources
    • Code for IBM i Fridays
    • QCachegrind Download
    • PHP Toolkit for IBM i Resources
    • Qshell on i Library
  • Blog
  • About
    • About Our Team
    • About Alan Seiden
    • Speakers & Sessions
    • In the News
  • Contact
  • 201.447.2437
  • Search
  • Menu Menu

Tag Archive for: iSeries

Alan Seiden

What’s New with Mapepire Database Connector for IBM i

October 5, 2026/0 Comments/in Open Source /by Alan Seiden

Since its release by IBM two years ago, the open-source Db2 for IBM i connector known as Mapepire has become a trusted part of our ecosystem.  In 2025, we wrote about Seiden Group professional support for Mapepire and answered common questions. Since then, the project has continued to advance and prove itself. Here’s what’s new.

Recent Mapepire news and updates

  • IBM chose Mapepire to support its strategic AI agent-enabling software, the IBM i MCP Server
  • The Code for i project has adopted Mapepire for running Db2 queries
  • Enhancements continue with features such as Read-Only Mode

Seiden Group experience on projects using Mapepire

  • Implemented multiple Node.js API projects using Mapepire to access data and stored procedures (SQL and RPG)
  • Load/speed testing showed excellent throughput
  • Used Mapepire as the connector for the MCP Server and AI agents we developed
  • Developed projects in multiple languages (Node/JavaScript, PHP, Python, etc.) using Mapepire for database access

Mapepire’s proven benefits

  • Simpler deployment of applications — no driver needed
  • Easier to secure, Mapepire requires only a single open port, which is configurable, rather than multiple host server ports
  • No license needed
  • Open source means no surprises from release to release
  • No vendor lock-in

Your partner for IBM i support and Mapepire

  • Seiden Group can help you reach your goals for modern development on IBM i.
  • We support Mapepire at every stage – development up through production as well as break/fix support and the creation of new client language libraries.
  • Contact us to learn more.
https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Alan Seiden https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Alan Seiden2026-10-05 09:59:142026-10-05 12:39:19What’s New with Mapepire Database Connector for IBM i
Alan Seiden

PHP 8.6 is Coming Soon to IBM i

July 24, 2026/1 Comment/in PHP /by Alan Seiden

Scheduled for late 2026, PHP 8.6 is expected to bring numerous improvements, especially in diagnostics, security, and performance.

Here are several PHP 8.6 highlights that I see as helpful for IBM i users and a note about PHP 8.2 going end-of-life.

Seiden Group’s Contribution to PHP 8.6

One of the proposed PHP 8.6 enhancements came from our own team. Calvin Buckley of Seiden Group wrote the RFC to display function arguments in PHP error messages:

https://wiki.php.net/rfc/display_error_function_args

This improvement is designed to make debugging easier by showing more information when a built-in function fails.

For example, instead of seeing only that a file operation failed, developers may be able to see which argument caused the problem. That kind of detail can save time when troubleshooting production issues.

Easier JSON Troubleshooting

PHP 8.6 should help when looking for invalid JSON. Before PHP 8.6, json_last_error_msg() would describe the error, but not tell where in the JSON string to find the invalid portion.  Now, in 8.6, if json_decode() fails, error and exception messages can indicate where the JSON problem occurred. Courtesy of the php.watch site, here is an example:

1
2
3
4
<span class="token variable">$json</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'[{'</span><span class="token punctuation">;</span>
<span class="token function">json_decode</span><span class="token punctuation">(</span><span class="token variable">$json</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// null</span>
<span class="token function">json_last_error_msg</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// "Syntax error near location 1:3"</span>

For applications that exchange data with APIs, web services, JavaScript front ends, and vendor systems, this should make testing and support easier.

Safer Defaults and Security Hardening

PHP 8.6 also includes security improvements. More secure session defaults are planned, including strict session mode, HttpOnly session cookies, and SameSite=Lax cookies:

https://wiki.php.net/rfc/session_security_defaults

These settings help reduce common risks such as session fixation, stolen cookies through JavaScript, and some cross-site request forgery scenarios.

Other security-related changes include tighter handling of invalid inputs, safer SQL string quoting for mysqli, and limits on long php://filter chains that have been abused in certain attack techniques:

https://wiki.php.net/rfc/policy-exempt-type-value-error-bc-policy

https://wiki.php.net/rfc/mysqli_quote_string

https://wiki.php.net/rfc/limit-maximum-number-of-filter-chains

JSON Performance Improvements

There are performance improvements as well, including faster JSON encoding of arrays and objects, and better performance when using json_encode() with PHP_JSON_PRETTY_PRINT.

True Async: A Direction to Watch

Another area to watch is True Async, which prepares PHP to compete with other languages that natively support concurrent tasks, services, and I/O operations. For IBM i teams, that direction is worth watching as PHP continues to be used for more than traditional web pages.

PHP 8.2 End of Life Is Approaching

While PHP 8.6 develops, PHP 8.2 is approaching end of life. Its security support ends on December 31, 2026. After that, PHP 8.2 will no longer receive upstream security fixes from the PHP project.

Running an end-of-life PHP version can create security exposures, audit concerns, dependency problems, and a harder migration later.

The best approach is to stay current before the situation becomes urgent.

How Seiden Group Can Help

With Seiden PHP+ Server and our support services, we help clients plan PHP migrations, resolve compatibility issues, and keep production environments stable. We also contribute directly to PHP’s future, as Calvin’s RFC demonstrates.

PHP 8.6 brings improvements, while staying current protects your applications, reduces risk, and keeps your IBM i environment ready for the future.

If you are running PHP 8.2 or older releases, or are not sure which PHP versions you have, now is a good time to review your options. Contact Seiden Group to assess your current PHP setup, plan your next migration, and keep your applications secure and supported.

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Alan Seiden https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Alan Seiden2026-07-24 08:00:522026-09-25 13:54:30PHP 8.6 is Coming Soon to IBM i
Calvin Buckley

Continuous Integration for PHP Extensions

June 20, 2022/0 Comments/in Open Source, PHP /by Calvin Buckley

(Co-written with Alan Seiden)

CI/CDContinuous Integration (CI) ensures that every time a developer commits changes to a version control system such as Git, the code is automatically built and subjected to automated tests.

CI has been invaluable to us. As maintainers of PHP’s PDO_IBM and ibm_db2 extensions, we use CI to ensure high quality across platforms.

Platforms supported by PHP’s extensions for Db2 include IBM i, Unix/Linux, and Windows. While our focus is IBM i, we must ensure compatibility with the others. Reliance on manual testing would introduce the risk of broken builds or subtle bugs. Automation is a must.

In this post, we explain how we use CI principles when building and testing PHP’s Db2 extensions.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Calvin Buckley https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Calvin Buckley2022-06-20 10:55:582022-06-28 17:18:39Continuous Integration for PHP Extensions
Liam Barry Allan

Visual Studio Code, IBM i & PHP

July 27, 2021/0 Comments/in PHP, VS Code for i /by Liam Barry Allan

Visual Studio Code 1.35 iconEvery post about Code for IBM i thus far has been how it can be used for writing RPG, CL, COBOL, etc. But what about other languages? Of course, PHP is another one of those very popular languages on IBM i. Calvin wrote a little while ago about how it’s possible to use RDi to write PHP code on the server, which is great. I think we can take it up a notch, which brings us to this post.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Liam Barry Allan https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Liam Barry Allan2021-07-27 11:47:452023-10-20 16:41:13Visual Studio Code, IBM i & PHP
Calvin Buckley

Detecting Memory Leaks in PHP Extensions During Development

February 3, 2021/4 Comments/in PHP /by Calvin Buckley

memory leakWhen a PHP extension has a memory leak, mysterious crashes can result, forcing users to restart the web server for relief.

As official maintainers of the ibm_db2 and PDO_IBM extensions, we’ve been on a quest to find and eliminate any memory leaks from these popular PHP modules.

With such a comprehensive goal, we needed a strategy. For extensions that have comprehensive test suites we decided that, in addition to reviewing the usual regression tests, why not also use the tests to detect leaks?

What follows is a technical look at how we do it.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Calvin Buckley https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Calvin Buckley2021-02-03 09:32:422021-02-02 17:35:09Detecting Memory Leaks in PHP Extensions During Development
Calvin Buckley

Sending Email from PHP on IBM i

January 15, 2021/0 Comments/in PHP /by Calvin Buckley

With reliable email functionality being one of the top concerns of IBM i PHP users, we’ve made sure that Seiden PHP+ includes everything you need to send email. The PHP mail() function works well, as do components such as Zend\Mail and PHPMailer.

Over the past couple of years, we’ve been hearing from disappointed PHP users that mail() didn’t work in other community PHP distributions (and some builds of Zend Server). PHP mail() requires an external program that implements the sendmail interface. If your PHP distribution lacked sendmail or equivalent, you might have received a cryptic error message such as:

1
sh: -t:  not found

This article discusses your options for sending email using Seiden PHP+.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Calvin Buckley https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Calvin Buckley2021-01-15 16:27:592025-12-15 12:25:57Sending Email from PHP on IBM i
Alan Seiden

Free PHP on IBM i: from Basic edition to RPMs

April 29, 2020/0 Comments/in PHP /by Alan Seiden

UPDATE: Community PHP is now known as Seiden PHP.

open phpLast week, Perforce announced plans to withdraw Zend Server for IBM i “Basic” by June 2021. Filling the gap is “community” PHP for IBM i, installable in RPM format.

Seiden Group has been assisting IBM i clients to adopt Community PHP since its introduction last year. We’ve helped with both first-time PHP installations and migrations from Basic.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Alan Seiden https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Alan Seiden2020-04-29 11:39:472025-12-18 13:02:03Free PHP on IBM i: from Basic edition to RPMs
Alan Seiden

Free and Open PHP on IBM i

December 17, 2019/3 Comments/in IBM i, PHP /by Alan Seiden

Editor’s Note: The information in this article is useful for historical context but is now out of date. We currently recommend Seiden PHP+ as the most reliable PHP distribution for IBM i.

open php ibm iA new flavor of PHP has arrived in IBM i-land. Some call it “free.” Some call it “community.” As described in a recent IT Jungle article, PHP is now available on IBM i as a lean RPM download that does not require Zend Server.

Our friends at IBM and Zend (now Perforce) have packaged a bare-bones PHP edition for customers who want PHP but don’t feel they need to purchase the extra tools of Zend Server.

I’ll share what our open source experts at Seiden Group have learned as we’ve installed and optimized both traditional Zend Server and “open” PHP for our customers.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Alan Seiden https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Alan Seiden2019-12-17 10:23:042025-12-18 13:04:48Free and Open PHP on IBM i
Alan Seiden

CIO Summit Features DB2 for i Briefing with IBM’s Scott Forstie

January 22, 2019/0 Comments/in CIO Strategy, Db2 for i, IBM i /by Alan Seiden
Scott Forstie Alan Seiden

Scott Forstie (left) with Alan Seiden at a previous CIO Summit

In recent years, Db2 for i Business Architect Scott Forstie and his team have rapidly strengthened the IBM i database, improving the sophistication of its SQL query engine, and adding to its galaxy of IBM i services. What’s more, they have several years’ worth of new enhancements in the pipeline.

CIOs and IT Directors can meet Scott at the CIO Summit on March 25, 2019, Charlotte, North Carolina, for an IBM i strategy briefing.

Read more →

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Alan Seiden https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Alan Seiden2019-01-22 15:54:142019-01-30 15:37:40CIO Summit Features DB2 for i Briefing with IBM’s Scott Forstie
Alan Seiden

Calling procedures and service programs with the PHP Toolkit for IBM i

December 27, 2012/14 Comments/in IBM i, PHP /by Alan Seiden

Calling procedures in RPG service programs, including getting the return value, is a powerful feature of the PHP Toolkit. The sample script below demonstrates how it’s done.

Note: Make sure your procedure name is 100% correct. It is case-sensitive. If you get an error, run the following command (replacing LIBNAME/PGMNAME with your library and program names) and look for your procedure name in the output. The command:
DSPSRVPGM SRVPGM(LIBNAME/PGMNAME) DETAIL(*PROCEXP)

The example below includes ‘boilerplate’ code to show best practices for connecting to the toolkit and checking for a successful connection. The illustration of how to call a procedure is in the second half.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
require_once('ToolkitService.php');
 
// connect to toolkit using DB2 credentials (can also leave blank for default authority)
try {
    $conn = ToolkitService::getInstance('*LOCAL', 'MYUSER', 'MYPASS');
} catch (Exception $e) {
    // Determine reason for failure.
    // Probably database authentication error or invalid or unreachable database.
    $code = $e->getCode();
    $msg = $e->getMessage();
 
    switch ($code) {
        case 8001:
            // "Authorization failure on distributed database connection attempt"
            // Usually means a wrong DB2 user or password
            echo 'Could not connect due to wrong user or password.';
            break;
        case 42705:
            echo 'Database not found. Try WRKRDBDIRE to check.';
            break;
        default:
            echo 'Could not connect. Error: ' . $code . ' ' . $msg;
            break;
    } //(switch)
    die; // couldn't connect...handle this however you wish
} //(try/catch)
 
// set stateless mode for easy testing (no 'InternalKey' needed).
// (setOptions() introduced in v1.4.0)
$conn->setOptions(array('stateless'=>true));
 
/* If you wish to test this script but you don't have a real service program,
* use parseOnly and parseDebugLevel as shown below.
* No program will be called and you'll get your original values back.
* Simply uncomment the next line to try this great testing feature of the toolkit.
*/
//$conn->setOptions(array('parseOnly'=>true, 'parseDebugLevel'=>1));
 
// define several input/output params
$params = []; // start with empty array
$params[] = $conn->AddParameterChar('in', 1,'Division', 'DIV', 'A');
$params[] = $conn->AddParameterChar('in', 6,'Product', 'PROD', '123456');
$params[] = $conn->AddParameterPackDec('both', 7, 2, 'Quantity', 'QTY', '4.53');
$params[] = $conn->AddParameterZoned('out', 5, 2, 'Price', 'PRICE', '0');
 
// define a procedure return param. Can be any type, even a data structure
$retParam = $conn->AddParameterInt32('out', '4-byte int', 'MYRESULT', '13579');
 
/* Call service program procedure.
* In this example, assume your program is MYLIB/MYPGM and has a procedure/function 'myproc'
* (procedure name is case-sensitive).
* Note: specify optional procedure name in parameter 5, an array with associative index 'func'.
*/
$result = $conn->PgmCall('MYPGM', 'MYLIB', $params, $retParam, array('func'=>'myproc'));
 
if (!$result) {
    echo 'Error calling program. Code: ' . $conn->getErrorCode() . ' Msg: ' . $conn->getErrorMsg();
}
 
echo 'Called program successfully.<BR><BR>';
echo 'Input/output params: QTY: ' . $result['io_param']['QTY'] . ' PRICE: ' . $result['io_param']['PRICE'] . '<BR>';
echo 'Procedure return param MYRESULT: ' . $result['retvals']['MYRESULT'];
 
/*
The above will output something like:
 
Called program successfully.
 
Input/output params: QTY: 4.53 PRICE: 0.00
Procedure return param MYRESULT: 13579
 
*/

For more information on the toolkit, see our toolkit information page or get in touch.

https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png 0 0 Alan Seiden https://www.seidengroup.com/wp-content/uploads/2017/03/SeidenLogo-180.png Alan Seiden2012-12-27 15:19:322023-05-17 17:24:29Calling procedures and service programs with the PHP Toolkit for IBM i
Page 1 of 212
SUBSCRIBE
Open Thinking
Monthly IBM i Strategy & Tips
  • This field is for validation purposes and should be left unchanged.

IBM i Development

  • RPG, COBOL, SQL, Node,
    PHP, Python, Valance, etc.
  • Modernization. Integration.
  • Web and API Solutions
  • Legacy Maintenance
    ...
LET'S GET IT DONE!

Recent Posts

  • Moving to IBM i 7.6? An SDA Alternative with VS Code and IBM Bob
  • What’s New with Mapepire Database Connector for IBM i
  • Do You Need IBM i Observability?
  • PHP 8.6 is Coming Soon to IBM i
  • Safer npm installation is on the way for Node.js (and all JavaScript)
  • Access Modern Security for IBM i and Connected Web Environments
  • IBM i: A Natural Platform for Agentic AI
  • PHP on IBM i in 2026: The Modernization Engine
  • Your “AS/400” Is a Modern IBM i Platform
  • MCP + AI for IBM i Teams (with a MongoDB example)

SEIDEN GROUP: Modern Development & Open Source for IBM i

Home   |   Seiden PHP+   |   IBM i Services  |   Support   |   VS Code for i   |   Free Stuff   |   Blog  |   Privacy Policy  |   Contact         201.447.2437

© 2026 Seiden Group, LLC
  • Link to LinkedIn
  • Link to Mail
Scroll to top Scroll to top Scroll to top