Issue

On start up, the PHP child jobs will not start in Apache.  Instead, the PHP parent job continually crashes and restarts.  Joblogs for these jobs may show messages similar to this one: (or ZENDSVR6 for older versions)

Space offset X'00000000' or X'00000000ADE58D20' is outside
current limit for object ZENDPHP7  QTMHHTTP  248327.

If this is happening, it is important to shut down Apache quickly, as the joblogs will accumulate rapidly.

After updating, Apache start up fails on IBM i, PHP keeps restarting

Environment

Zend Server for IBM i

Resolution

A common reason for a space offset error is some damage in a shared memory object.  The reset function provided with Zend Server for IBM i will delete and recreate the shared memory objects, and can often resolve this issue.  The following article tells how to do the reset:

Reset Zend Server for IBM i

Your *SECOFR class profile may make you a virtual deity on your IBM i, but it cannot give you UID 0.  No, for this, only QSECOFR, and no other, shall be designated UID 0.  It is only by UID 0 that PASE shall know you as the one with power, and without UID 0, PASE will deny you the reset.  Ever has it been, and always shall it be.


If you have an extra Apache instance that uses PHP, and that instance shows this start up behavior, but the ZENDPHP7 (or ZENDSVR6 for older versions) instance starts up fine, compare the UID value in each fastcgi.conf configuration.  They should match.  If not, carefully copy the UID from the default Zend Apache instance to your custom Apache instance fastcgi.conf.  Then try starting the custom Apache instance.

If the reset fails to fix the issue, you can perform a clean install:

Perform a Clean Install of Zend Server for IBM i

There is almost nothing a clean install won't fix, including this issue.

Details

To determine if this is happening on your system, please display the QHTTPSVR subsystem active jobs:

wrkactjob sbs(qhttpsvr)

Apache server instances that run PHP will have jobs similar to these (ZENDPHP7 is the default Apache instance for Zend Server 9.1.x, Zend Server 2018.x, Zend Server 2019.x.  ZENDSVR6  is the default Apache instance for versions 6 - 8.5.x) configured for Zend Server, so that is the job name displayed here:

ZENDPHP7     QTMHHTTP    BCH      .0  PGM-QZHBMAIN      SIGW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-QZSRLOG      SIGW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-QZSRLOG      SIGW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-QZSRHTTP    SIGW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-zfcgi        SELW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-php-cgi.bi   THDW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-php-cgi.bi   TIMW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-php-cgi.bi   TIMW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-php-cgi.bi   TIMW
ZENDPHP7     QTMHHTTP    BCI      .0  PGM-php-cgi.bi   TIMW

The first jobs that are running functions that start with 'Q' are Apache jobs.  The job that runs zfcgi is the FastCGI gateway job that calls PHP.  The first job running php-cgi.bi is the parent PHP job.  The normal status for this job is THDW.  The rest of the jobs running php-cgi.bi are the child PHP jobs.

If this issue is happening to you, there will not be any child jobs.  The last job shown will be the parent.  If you use F5 rapidly over and over, you will notice the parent job is constantly failing and respawning.  If job logging is active for these jobs, you can look into the job log to see if the space offset error is there.  If you are not getting job logs, you can set the logging levels for the FastCGI job (zfcgi) and those levels will be used in subsequent parent jobs that start up.  Be careful, because these jobs are starting up rapidly, and you can quickly accumulate far too many job logs.