Skip to content

Commit 4e764d1

Browse files
2026.1 release code drop
Release 2026.1.0
1 parent d1ef6f8 commit 4e764d1

6 files changed

Lines changed: 45 additions & 27 deletions

File tree

RELNOTES.txt

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Release Notes for
22
P4PHP, P4 API for PHP
33

4-
Version 2025.2
4+
Version 2026.1
55

66
Introduction
77

@@ -20,14 +20,6 @@ Introduction
2020

2121
--------------------------------------------------------------------------
2222

23-
Important End-of-Life Notice
24-
25-
This major release of P4PHP would be the last to test against
26-
PHP version 8.1.x, which is in EOL status. This is part of our
27-
commitment to focus on supported technology platforms.
28-
29-
--------------------------------------------------------------------------
30-
3123
Important Product Rebrand Notice
3224

3325
Helix Core is now P4
@@ -61,32 +53,31 @@ Compatibility Statements
6153

6254
Server Compatibility
6355

64-
This release of P4PHP supports the 2025.2 P4 Server.
56+
This release of P4PHP supports the 2026.1 P4 Server.
6557
Older releases might work but are not supported.
6658

6759
API Compatibility
6860

69-
This release of P4PHP requires the 2025.2 (2025.2/2852709) P4 C/C++ API.
61+
This release of P4PHP requires the 2026.1 (2026.1/2951233) P4 C/C++ API.
7062
Older releases will not work and will fail to compile.
7163

7264
OpenSSL compatibility
7365

74-
The minimum version of OpenSSL libraries required is driven by the
75-
2025.2 server; the minimum version needed is 1.1.1. The latest 3.x.x or
76-
1.1.1 patch is recommended.
66+
The 2026.1 server requires OpenSSL 3.x.x.
67+
It is recommended to use the latest available patch version.
7768

7869
PHP compatibility
7970

80-
This release of P4PHP is compatible with PHP versions: 8.1.x - 8.5.x
71+
This release of P4PHP is compatible with PHP versions: 8.2.x - 8.5.x
8172

8273
Platform compatibility
8374

8475
Though P4PHP is generally portable, this release is tested on the
8576
following platforms:
86-
77+
8778
Linux kernel 2.6+ for Intel(x86_64)
88-
Ubuntu 20.04, 22.04, 24.04
89-
Rocky Linux 8, 9, 10
79+
Ubuntu 22.04, 24.04
80+
Rocky Linux 9, 10
9081
Linux kernel 2.6+ for ARM(aarch64)
9182
Ubuntu 22.04, 24.04
9283
Rocky Linux 9, 10
@@ -167,6 +158,13 @@ Key to symbols used in change notes below.
167158

168159
--------------------------------------------------------------------------
169160

161+
New functionality in 2026.1 (2026.1/2974506)(2026/06/11)
162+
163+
#2948829 (Job #133660) * ** ***
164+
This release of P4PHP is built against P4 C/C++ API 2026.1
165+
166+
--------------------------------------------------------------------------
167+
170168
New functionality in 2025.2 Patch 2 (2025.2/2906131) (2026/03/05)
171169

172170
#2904560 (Job #131389)

config.w32

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ if (PHP_PERFORCE != "no") {
5252
ADD_FLAG("CFLAGS_PERFORCE", "/DCASE_INSENSITIVE");
5353
ADD_FLAG("LDFLAGS_PERFORCE", "/NODEFAULTLIB:msvcrtd");
5454
ADD_FLAG("LDFLAGS_PERFORCE", "/FORCE:MULTIPLE");
55+
ADD_FLAG("LDFLAGS_PERFORCE", "iphlpapi.lib");
5556

5657

5758
/* get information about p4api version */

php_p4.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,14 @@ PHP_METHOD(P4, run_password)
10131013
params[0] = param0;
10141014

10151015
array_init(&input);
1016-
add_next_index_zval(&input, oldpass);
1016+
/* On a fresh server "Secure By Default" there is no
1017+
* existing password, so 'p4 passwd' prompts only for the new password and
1018+
* its confirmation -- not the old password.
1019+
* When oldpass is empty send [newpass, newpass]; otherwise send
1020+
* [oldpass, newpass, newpass]. */
1021+
if (Z_TYPE_P(oldpass) == IS_STRING && Z_STRLEN_P(oldpass) > 0) {
1022+
add_next_index_zval(&input, oldpass);
1023+
}
10171024
add_next_index_zval(&input, newpass);
10181025
add_next_index_zval(&input, newpass);
10191026

tests/005.phpt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,25 @@ requireP4d();
1212
include 'connect.inc';
1313

1414
// test that run_login and run('login') are the same
15-
$results = $p4->run_login("testing123");
15+
$results = $p4->run_login(SUPER_PASSWORD);
1616
var_dump($results);
17-
$p4->input = "testing123";
17+
$p4->input = SUPER_PASSWORD;
1818
$results2 = $p4->run("login");
1919
var_dump($results2);
2020

2121
// test that run_password and run('passwd') are the same
22-
$results = $p4->run_password("testing123", "testing321");
22+
$results = $p4->run_password(SUPER_PASSWORD, "P4Test!Pwd99");
2323
var_dump($results);
24-
$p4->input = array("testing321", "testing123", "testing123");
24+
$p4->password = 'P4Test!Pwd99';
25+
$p4->run_login('P4Test!Pwd99');
26+
$p4->input = array("P4Test!Pwd99", SUPER_PASSWORD, SUPER_PASSWORD);
2527
$results2 = $p4->run("passwd");
2628
var_dump($results2);
29+
$p4->password = SUPER_PASSWORD;
30+
$p4->run_login(SUPER_PASSWORD);
2731

2832
// test that logging in still works
29-
$results = $p4->run_login("testing123");
33+
$results = $p4->run_login(SUPER_PASSWORD);
3034
var_dump($results);
3135

3236
// add some files so that we can test various file related commands

tests/connect.inc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,18 @@ $p4->user = "tester";
2525
$p4->tagged = true;
2626
$p4->connect();
2727

28-
// create user.
28+
// On p4d 2026.1+ ("Secure By Default") password authentication is enforced from
29+
// the very first connection; the only operation allowed pre-auth is setting the
30+
// initial password. Set it first (no old password on a fresh server), then log
31+
// in so a ticket is cached for the rest of the test.
32+
$p4->run_password('', SUPER_PASSWORD);
33+
$p4->password = SUPER_PASSWORD;
34+
$p4->run_login(SUPER_PASSWORD);
35+
36+
// create user (now authenticated).
2937
$user = $p4->fetch_user();
3038
$user['Name'] = 'tester';
3139
$p4->save_user($user);
32-
$p4->run_password("testing123", "testing123");
33-
$p4->run_login("testing123");
3440

3541
// create clients
3642
$p4->client = CLIENT_ONE_NAME;

tests/helper.inc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ define('CLIENT_TWO_ROOT', getcwd() . DIRECTORY_SEPARATOR . 'client-two');
77
define('CLIENT_ONE_NAME', 'test-client-1');
88
define('CLIENT_TWO_NAME', 'test-client-2');
99

10+
define('SUPER_PASSWORD', 'P4PHP!Super1');
11+
1012
function whichP4d()
1113
{
1214
// locate p4d binary

0 commit comments

Comments
 (0)