Zendcon 2014 promo video for IBM i users

About Zendcon:

Find the Technology Refresh (TR) level of an IBM i

Update: I have since learned that the “PTF” IBM i Service (DB2 and SQL) provides one’s TR level more cleanly than with other approaches. I read of the improved approach in an article by Tim Rowe: https://systemideveloper.com/blogs/db2-for-i-services-use-sql-instead-of-system-apis/ by way of Club Seiden member PHP Dave.

IBM i services comprise a collection of DB2 and SQL objects that provide a wealth of system information. The GROUP_PTF_INFO view, for example, will display an IBM i’s Technology Refresh (TR) level to the user who runs this SQL:

SELECT CURRENT SERVER CONCAT ' is running ' CONCAT PTF_GROUP_TARGET_RELEASE 
CONCAT ' with TR level: ' CONCAT PTF_GROUP_LEVEL AS TR_LEVEL 
FROM QSYS2.GROUP_PTF_INFO WHERE PTF_GROUP_DESCRIPTION = 'TECHNOLOGY REFRESH' 
AND PTF_GROUP_STATUS = 'INSTALLED' ORDER BY PTF_GROUP_TARGET_RELEASE DESC 
FETCH FIRST 1 ROWS ONLY

When run on my server, the result was a single column, TR_LEVEL, with the value:

SEIDENI is running V7R2M0 with TR level: 3

Time for me to upgrade, yes?

Here was the original post with older techniques:

I recently needed to know if a client’s IBM i 7.1 system had Technology Refresh 4 (TR4). If it did, I could use the relatively new INSERT with remote SUBSELECT technique, which allows a single SQL statement to copy DB2 data from one partition to another. Such are the benefits of keeping current with Technology Refreshes.

After reading an article on TRs by Steve Will, I decided to document how to determine which TRs are installed on an IBM i system.

TRs, which were introduced with IBM i 7.1, are packaged as Program Temporary Fixes (PTFs). They can be found with the DSPPTF command.

First, determine the product number of the licensed internal code of  your system. For 7.1, the product number is 5770999.

Then use the DSPPTF command followed by this product number. For example:

DSPPTF 5770999

When run on my test system, this command produced a list of PTFs that included MF99007, MF99006, MF99005, MF99004, MF99003, MF99002, and MF99001.

Because Technology Refresh PTF numbers follow the format MF99nnn, where nnn is the TR number (bolded above), I knew that TR7, TR6, TR5, TR4, TR3, TR2, and TR1 were available. I was pleased to learn I could use TR4’s enhancements to DB2.

ZendCon+Tutorial discount expires Aug. 31

ZendCon, the premier PHP conference, October 27-30, 2014, in Santa Clara, California, has a discount expiring August 15 31 (extended!). When you register, be sure to include the tutorial day (Oct. 27). If you already registered but forgot to add the tutorial day, you can contact the organizers via a link at the bottom of the registration page. Among other half-day tutorials, I’ll be presenting two focused on IBM i:

  • PHP Performance on IBM i
    • If you’re interested in performance of PHP, or IBM i generally, in order to scale your application up to meet increased user demand, or if you have specific performance needs right now, you’ll want to attend.
    • Additional insight to be provided by IBM’er Tony Cairns (see below)
    • Testimonial from last year: “Our process now runs 30-50% faster, thanks to one tip from Alan’s presentation.”
      —Mike Meszaros, Software Developer, Specialty Pipe & Tube
  • DB2 with PHP in Depth
    • DB2 on IBM i has received major enhancements over the past year, including a dozen new settings in the PHP ibm_db2 middleware. Hear  how they can help improve security, performance, and stability. Other topics will include, but not be limited to:
      • Basic topics (with added commentary to make it interesting for everyone) such as library lists, prepared queries for security, persistent connections
      • DB2 in frameworks
        • Zend Framework 2
          • Including pagination (page-at-a-time logic)
        • Status of PDO and how it can be used in Laravel and other frameworks
      • The real scoop about modernization and the DDS vs. DDL (SQL) debate
      • Connecting to IBM i’s DB2 from Windows and Linux and other IBM i partitions
      • How to link MySQL-based applications (WordPress, etc.) to DB2 with the DB2 Storage Engine, with special tips
      • Using DB2’s HTTP features to make PHP-based web services even more accessible, including to allow RPG to call PHP and get results back
      • How to optimize queries
      • Strategies to safely open your application to the public
      • Topics and questions that YOU request (contact me in advance if you wish)

My co-presenter for tutorials will be IBM’s Tony Cairns, who helped bring PHP to the IBM i in the first place. He also created XMLSERVICE (toolkit back-end) and is a maintainer of ibm_db2 on the IBM i. One reason Tony comes to ZendCon is to hear from attendees such as yourselves. Normally he stays locked up in his lab. Take advantage of this opportunity to meet him. Watch Tony and me argue and debate in front of the class!

I’m also presenting a session during the regular conference about the PHP Toolkit for IBM i. I’ve updated my presentation with new features of the toolkit and best practices for calling RPG and COBOL.

ZendCon‘s topics are generally advanced ones to enable professional, enterprise-ready development practices. There’s also an IBM i track and plenty of networking time so that IBM i users of PHP can learn from speakers and each other, making the conference appropriate for intermediate users of PHP on IBM i as well.

Hope to see you there, October 27-30, 2014! Remember to register for tutorial day when you register for the conference. Get in touch with questions you’d like answered during my presentations.

IBM i safe from OpenSSL Heartbleed bug

Clients have asked me whether their IBM i servers may be vulnerable to hackers due to the widely publicized OpenSSL Heartbleed bug.

The answer is no. IBM i is safe from this bug, which is present only in specific OpenSSL versions: 1.0.1 through 1.0.1f (inclusive). IBM i’s latest version of OpenSSL, shipped with the “Portable Utilities for i” licensed program product 5733SC1, is 0.9.8, which does not contain the bug.

To make doubly certain, check what version of OpenSSL is installed on your IBM i. Run these two commands, which, respectively, start a PASE interactive terminal session and check the openssl version:
call qp2term
openssl version

For me, the above commands returned “OpenSSL 0.9.8m 25 Feb 2010,” confirming that I’m not affected.

Press F3 afterward to leave the PASE environment.

Thanks to Jim Oberholtzer of Agile Technology Architects for his contribution to this answer.

UPDATE from IBM: System SSL and IBMJSSE2 are also safe from the vulnerability on IBM i.

ZF2 and DB2 for IBM i

I’d like to address questions about DB2 support in Zend Framework 2.x. Because I helped create the IBM i-friendly DB2 adapter for Zend Framework 1.x, I’ve followed the development of a similar adapter for ZF2.

(updated January 30, 2013, upon the release of ZF 2.1)

Q. Does ZF 2 include an adapter for DB2?
A. Yes! Starting with ZF 2.1, which was released today.

Q. Is Alan’s IBM i-friendly DB2 adapter for Zend Framework 1.x needed in 2.x?
A. No. Because ZF’s Zend_Db equivalent in 2.x works differently than in 1.x, my 1.x component is not needed in 2.x.

Q. Does ZF 2.1’s DB2 adapter work with IBM i?
A. Yes! Please try it and provide feedback to the ZF team.

Which version of Zend Server for IBM i do I have?

Here is the easiest way to learn the version of Zend Server installed on an IBM i system.
[Updated December 20, 2017]

From a 5250 command line, follow these four steps:

1. GO LICPGM
2. Take option 10 (Display installed licensed programs)
3. Scroll down to the licensed program 2ZSVRPI, 6ZSVRPI, or 7PHPZND 
     (on my system, it's the last entry)
4. Read the product description,
     containing version numbers for Zend Server and PHP,
     in the form "Zend Server for IBM i [version] ( PHP [version])"

On my IBM i, I see:
7PHPZND   *INSTALLED   Zend Server for IBM i 9.1.2 ( PHP 7.1 )
so Zend Server is at 9.1.2 and PHP is 7.1.

Thanks to Zend’s Sam Pinkhasov for this tip.

We’ve been named a Top 10 IBM i blog

This blog, alanseiden.com, has been named to the “Best i Blog Bets” top 10 list by Alex Woodie, Senior Editor of IT Jungle.

Thank you to Alex for this honor. This site will continue to offer articles, presentations, event listings, and news about PHP, Zend Framework, IBM i, and other topics of interest to the PHP/i community.

Zend/PHP 2011 Photos, Part 1 (IBM i)

IBM i had a solid presence at ZendCon, the Zend/PHP conference. IBM itself was a sponsor and staffed a booth (Tim Rowe and Tony Cairns). Here are a few photos from the conference. I’ll post more when I get time.

IBM i for Business / PHP pin

PHP/IBM i pin given out at IBM booth at ZendCon 2011

Chris Pharo from CrossPointe LLC's UnCon presentation showing green screen and PHP webified version

Chris Pharo from Crosspointe, LLC, demonstrating how their "TERMS 2020" school district ERP package evolved from a green screen interface to PHP/web, all on IBM i

Alan Seiden with elePHPant at ZendCon 2011

Alan with elePHPant

NEUGC and COMMON are coming right up

Next week I’ll be in Framingham to present at the Northeast System i Users Groups Conference (NEUGC). In early May,  it’s Minneapolis for the COMMON 2011 annual meeting. Here are the dates and places of these great conferences:

NEUGC: April 11-13, 2011, in Framingham, Mass.
COMMON: May 1-4, 2011, in Minneapolis, Minn.

At each conference I’ll be presenting 6 talks:

  • 4 about PHP on IBM i: web services, batch jobs, Zend Framework, and my research into best practices for db2
  • one about making web development easier with free tools that run in a web browser (a fun one)
  • one non-technical talk about how to stay healthy despite years of professional computer use (fun and interactive)

Both conferences have an exciting lineup of speakers and topics. I plan to learn a lot and meet many great people. If you are there, please say hello.

SSH on IBM i

Secure Shell (SSH), a network protocol used every day by software developers, provides a fast, secure means to transfer files and submit commands to remote servers.

Zend Studio 8.0‘s SSH support allows users to save their PHP scripts onto remote servers such as IBM i.

How to set up SSH on IBM i

SSH runs as a server program, the SSH daemon (sshd). Before sshd can run, it requires a set of public/private key pairs.

Instructions for creating the key pairs and starting the server are given below.  There are two versions of instructions, depending on the version of OS.

IBM i v6.1 and higher: one step creates public/private keys (if needed) and starts server

STRTCPSVR *SSHD

V5R3 and V5R4: two steps are required

1. First, create the public/private key pairs (only needs to be done once):

CALL QP2TERM
ssh-keygen -t rsa1 -f /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/ssh_host_key -N ""
ssh-keygen -t dsa -f /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/ssh_host_dsa_key -N ""
ssh-keygen -t rsa -f /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-3.5p1/etc/ssh_host_rsa_key -N ""

2. Then start sshd (“&” means to run in background):

/usr/sbin/sshd &
Either way, the daemon should now be running. To check, type NETSTAT *CNN on an ordinary 5250 command line. Look for a local port called “ssh” or 22.
For more information about setting up SSH, including prerequisites, see this “Young i Professionals” SSH wiki article and this old but still useful SSH article from Zend’s Knowledge Base.