## Changed functions

### PHP Core

- getopt() has an optional third parameter that exposes the index of the next element in the argument vector list to be processed. This is done via a by-ref parameter.
- getenv() no longer requires its parameter. If the parameter is omitted, then the current environment variables will be returned as an associative array.
- get_headers() now has an additional parameter to enable for the passing of custom stream contexts.
- output_reset_rewrite_vars() no longer resets session URL rewrite variables.
- parse_url() is now more restrictive and supports RFC3986.
- unpack() now accepts an optional third parameter to specify the offset to begin unpacking from.

### File System

- file_get_contents() now accepts a negative seek offset if the stream is seekable.
- tempnam() now emits a notice when falling back to the system's temp directory.

### JSON

- json_encode() now accepts a new option, `JSON_UNESCAPED_LINE_TERMINATORS`, to disable the escaping of U+2028 and U+2029 characters when `JSON_UNESCAPED_UNICODE` is supplied.

### Multibyte String

- mb_ereg() now rejects illegal byte sequences.
- mb_ereg_replace() now rejects illegal byte sequences.

### PDO

- PDO::lastInsertId() for PostgreSQL will now trigger an error when `nextval` has not been called for the current session (the postgres connection).

### PostgreSQL

- pg_last_notice() now accepts an optional parameter to specify an operation. This can be done with one of the following new constants: `PGSQL_NOTICE_LAST`, `PGSQL_NOTICE_ALL`, or `PGSQL_NOTICE_CLEAR`.
- pg_fetch_all() now accepts an optional second parameter to specify the result type (similar to the third parameter of pg_fetch_array()).
- pg_select() now accepts an optional fourth parameter to specify the result type (similar to the third parameter of pg_fetch_array()).

### Session

- session_start() now returns `FALSE` and no longer initializes $_SESSION when it failed to start the session.