[Bug 292802] php8[345] NOASLR option defunct

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 29 Jan 2026 14:22:56 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292802

            Bug ID: 292802
           Summary: php8[345] NOASLR option defunct
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: bofh@freebsd.org
          Reporter: lampa@fit.vutbr.cz
             Flags: maintainer-feedback?(bofh@freebsd.org)
          Assignee: bofh@freebsd.org

# cd /usr/ports/lang/php83
# make options
-> select X NOASLR (Disable ASLR Support)
# make

....
--- all ---

Build complete.
Don't forget to run 'make test'.

elfctl -i -e +noaslr /usr/ports/lang/php83/work/php-8.3.30/sapi/cli/php
elfctl -i -e +noaslr /usr/ports/lang/php83/work/php-8.3.30/sapi/cgi/php-cgi
===>  Staging for php83-8.3.30
===>   Generating temporary packing list
zend_vm_opcodes.h generated successfully.
zend_vm_opcodes.c generated successfully.
zend_vm_execute.h generated successfully.
/bin/sh /usr/ports/lang/php83/work/php-8.3.30/libtool --silent
--preserve-dup-deps --tag=CC --mode=compile cc -IZend/
-I/usr/ports/lang/php83/work/php-8.3.30/Zend/
-I/usr/ports/lang/php83/work/php-8.3.30/include
-I/usr/ports/lang/php83/work/php-8.3.30/main
-I/usr/ports/lang/php83/work/php-8.3.30
-I/usr/ports/lang/php83/work/php-8.3.30/ext/date/lib
-I/usr/local/include/libxml2 -I/usr/local/include
-I/usr/ports/lang/php83/work/php-8.3.30/TSRM
-I/usr/ports/lang/php83/work/php-8.3.30/Zend  -isystem /usr/local/include
-D_GNU_SOURCE  -fno-common -Wstrict-prototypes -Wformat-truncation -Wall
-Wextra -Wno-unused-parameter -Wno-sign-compare -O2 -pipe -march=native
-fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing
-ffp-contract=off -fvisibility=hidden -DZEND_SIGNALS  
-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -c
/usr/ports/lang/php83/work/php-8.3.30/Zend/zend_vm_opcodes.c -o
Zend/zend_vm_opcodes.lo  -MMD -MF Zend/zend_vm_opcodes.dep -MT
Zend/zend_vm_opcodes.lo
/bin/sh /usr/ports/lang/php83/work/php-8.3.30/libtool --silent
--preserve-dup-deps --tag=CC --mode=compile cc -IZend/
-I/usr/ports/lang/php83/work/php-8.3.30/Zend/
-I/usr/ports/lang/php83/work/php-8.3.30/include
-I/usr/ports/lang/php83/work/php-8.3.30/main
-I/usr/ports/lang/php83/work/php-8.3.30
-I/usr/ports/lang/php83/work/php-8.3.30/ext/date/lib
-I/usr/local/include/libxml2 -I/usr/local/include
-I/usr/ports/lang/php83/work/php-8.3.30/TSRM
-I/usr/ports/lang/php83/work/php-8.3.30/Zend  -isystem /usr/local/include
-D_GNU_SOURCE  -fno-common -Wstrict-prototypes -Wformat-truncation -Wall
-Wextra -Wno-unused-parameter -Wno-sign-compare -O2 -pipe -march=native
-fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing
-ffp-contract=off -fvisibility=hidden -DZEND_SIGNALS  
-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -c
/usr/ports/lang/php83/work/php-8.3.30/Zend/zend_execute.c -o
Zend/zend_execute.lo  -MMD -MF Zend/zend_execute.dep -MT Zend/zend_execute.lo
/bin/sh /usr/ports/lang/php83/work/php-8.3.30/libtool --silent
--preserve-dup-deps --tag=CC --mode=link cc -export-dynamic -fno-common
-Wstrict-prototypes -Wformat-truncation -Wall -Wextra -Wno-unused-parameter
-Wno-sign-compare -O2 -pipe -march=native -fstack-protector-strong -isystem
/usr/local/include -fno-strict-aliasing -ffp-contract=off -fvisibility=hidden
-DZEND_SIGNALS   -L/usr/lib -lcrypto -lssl -Wl,-rpath,/usr/local/lib
-L/usr/local/lib -Wl,-rpath,/lib -L/lib -L/usr/local/lib -L/lib  -L/usr/lib
-lcrypto -lssl   -R /usr/local/lib -R /lib ext/date/php_date.o
ext/date/lib/astro.o ext/date/lib/dow.o ext/date/lib/parse_date.o
ext/date/lib/parse_tz.o ext/date/lib/parse_posix.o ext/date/lib/timelib.o
ext/date/lib/tm2unixtime.o ext/date/lib/unixtime2tm.o
ext/date/lib/parse_iso_intervals.o ext/date/lib/interval.o ext/libxml/libxml.o
ext/openssl/openssl.o ext/openssl/xp_ssl.o ext/pcre/php_pcre.o ext/hash/hash.o
ext/hash/hash_md.o ext/hash/hash_sha.o ext/hash/hash_ripemd.o
ext/hash/hash_haval.o ext/hash/hash_tiger.o ext/hash/hash_gost.o
ext/hash/hash_snefru.o ext/hash/hash_whirlpool.o ext/hash/hash_adler32.o
ext/hash/hash_crc32.o ext/hash/hash_fnv.o ext/hash/hash_joaat.o
ext/hash/sha3/generic64lc/KeccakP-1600-opt64.o
ext/hash/sha3/generic64lc/KeccakHash.o ext/hash/sha3/generic64lc/KeccakSponge.o
ext/hash/hash_sha3.o ext/hash/murmur/PMurHash.o ext/hash/murmur/PMurHash128.o
ext/hash/hash_murmur.o ext/hash/hash_xxhash.o ext/json/json.o
ext/json/json_encoder.o ext/json/json_parser.o ext/json/json_scanner.o
ext/random/random.o ext/random/csprng.o ext/random/engine_combinedlcg.o
ext/random/engine_mt19937.o ext/random/engine_pcgoneseq128xslrr64.o
ext/random/engine_xoshiro256starstar.o ext/random/engine_secure.o
ext/random/engine_user.o ext/random/gammasection.o ext/random/randomizer.o
ext/reflection/php_reflection.o ext/spl/php_spl.o ext/spl/spl_functions.o
ext/spl/spl_iterators.o ext/spl/spl_array.o ext/spl/spl_directory.o
ext/spl/spl_exceptions.o ext/spl/spl_observer.o ext/spl/spl_dllist.o
ext/spl/spl_heap.o ext/spl/spl_fixedarray.o ext/standard/crypt_freesec.o
ext/standard/crypt_blowfish.o ext/standard/crypt_sha512.o
ext/standard/crypt_sha256.o ext/standard/php_crypt_r.o ext/standard/array.o
ext/standard/base64.o ext/standard/basic_functions.o ext/standard/browscap.o
ext/standard/crc32.o ext/standard/crypt.o ext/standard/datetime.o
ext/standard/dir.o ext/standard/dl.o ext/standard/dns.o ext/standard/exec.o
ext/standard/file.o ext/standard/filestat.o ext/standard/flock_compat.o
ext/standard/formatted_print.o ext/standard/fsock.o ext/standard/head.o
ext/standard/html.o ext/standard/image.o ext/standard/info.o
ext/standard/iptc.o ext/standard/link.o ext/standard/mail.o ext/standard/math.o
ext/standard/md5.o ext/standard/metaphone.o ext/standard/microtime.o
ext/standard/pack.o ext/standard/pageinfo.o ext/standard/quot_print.o
ext/standard/soundex.o ext/standard/string.o ext/standard/scanf.o
ext/standard/syslog.o ext/standard/type.o ext/standard/uniqid.o
ext/standard/url.o ext/standard/var.o ext/standard/versioning.o
ext/standard/assert.o ext/standard/strnatcmp.o ext/standard/levenshtein.o
ext/standard/incomplete_class.o ext/standard/url_scanner_ex.o
ext/standard/ftp_fopen_wrapper.o ext/standard/http_fopen_wrapper.o
ext/standard/php_fopen_wrapper.o ext/standard/credits.o ext/standard/css.o
ext/standard/var_unserializer.o ext/standard/ftok.o ext/standard/sha1.o
ext/standard/user_filters.o ext/standard/uuencode.o ext/standard/filters.o
ext/standard/proc_open.o ext/standard/streamsfuncs.o ext/standard/http.o
ext/standard/password.o ext/standard/net.o ext/standard/hrtime.o
ext/standard/crc32_x86.o ext/standard/libavifinfo/avifinfo.o
ext/mysqlnd/mysqlnd_connection.o ext/mysqlnd/mysqlnd_alloc.o
ext/mysqlnd/mysqlnd_charset.o ext/mysqlnd/mysqlnd_wireprotocol.o
ext/mysqlnd/mysqlnd_loaddata.o ext/mysqlnd/mysqlnd_reverse_api.o
ext/mysqlnd/mysqlnd_vio.o ext/mysqlnd/mysqlnd_protocol_frame_codec.o
ext/mysqlnd/mysqlnd_statistics.o ext/mysqlnd/mysqlnd_driver.o
ext/mysqlnd/mysqlnd_ext_plugin.o ext/mysqlnd/mysqlnd_auth.o
ext/mysqlnd/mysqlnd_result.o ext/mysqlnd/mysqlnd_result_meta.o
ext/mysqlnd/mysqlnd_debug.o ext/mysqlnd/mysqlnd_commands.o
ext/mysqlnd/mysqlnd_block_alloc.o ext/mysqlnd/mysqlnd_read_buffer.o
ext/mysqlnd/mysqlnd_plugin.o ext/mysqlnd/php_mysqlnd.o ext/mysqlnd/mysqlnd_ps.o
ext/mysqlnd/mysqlnd_ps_codec.o Zend/asm/make_x86_64_sysv_elf_gas.o
Zend/asm/jump_x86_64_sysv_elf_gas.o TSRM/TSRM.o main/main.o main/snprintf.o
main/spprintf.o main/fopen_wrappers.o main/php_scandir.o main/php_ini_builder.o
main/php_ini.o main/SAPI.o main/rfc1867.o main/php_content_types.o
main/strlcpy.o main/strlcat.o main/explicit_bzero.o main/reentrancy.o
main/php_variables.o main/php_ticks.o main/network.o
main/php_open_temporary_file.o main/php_odbc_utils.o main/safe_bcmp.o
main/output.o main/getopt.o main/php_syslog.o main/streams/streams.o
main/streams/cast.o main/streams/memory.o main/streams/filter.o
main/streams/plain_wrapper.o main/streams/userspace.o main/streams/transports.o
main/streams/xp_socket.o main/streams/mmap.o main/streams/glob_wrapper.o
Zend/zend_language_parser.o Zend/zend_language_scanner.o Zend/zend_ini_parser.o
Zend/zend_ini_scanner.o Zend/zend_alloc.o Zend/zend_call_stack.o
Zend/zend_compile.o Zend/zend_constants.o Zend/zend_dtrace.o
Zend/zend_execute_API.o Zend/zend_highlight.o Zend/zend_llist.o
Zend/zend_vm_opcodes.o Zend/zend_opcode.o Zend/zend_operators.o
Zend/zend_ptr_stack.o Zend/zend_stack.o Zend/zend_variables.o Zend/zend.o
Zend/zend_API.o Zend/zend_extensions.o Zend/zend_hash.o Zend/zend_list.o
Zend/zend_builtin_functions.o Zend/zend_attributes.o Zend/zend_execute.o
Zend/zend_ini.o Zend/zend_sort.o Zend/zend_multibyte.o Zend/zend_stream.o
Zend/zend_iterators.o Zend/zend_interfaces.o Zend/zend_exceptions.o
Zend/zend_strtod.o Zend/zend_gc.o Zend/zend_closures.o Zend/zend_weakrefs.o
Zend/zend_float.o Zend/zend_string.o Zend/zend_signal.o Zend/zend_generators.o
Zend/zend_virtual_cwd.o Zend/zend_ast.o Zend/zend_objects.o
Zend/zend_object_handlers.o Zend/zend_objects_API.o Zend/zend_default_classes.o
Zend/zend_inheritance.o Zend/zend_smart_str.o Zend/zend_cpuinfo.o
Zend/zend_gdb.o Zend/zend_observer.o Zend/zend_system_id.o Zend/zend_enum.o
Zend/zend_fibers.o Zend/zend_atomic.o Zend/zend_max_execution_timer.o
Zend/zend_hrtime.o Zend/Optimizer/zend_optimizer.o Zend/Optimizer/pass1.o
Zend/Optimizer/pass3.o Zend/Optimizer/optimize_func_calls.o
Zend/Optimizer/block_pass.o Zend/Optimizer/optimize_temp_vars_5.o
Zend/Optimizer/nop_removal.o Zend/Optimizer/compact_literals.o
Zend/Optimizer/zend_cfg.o Zend/Optimizer/zend_dfg.o Zend/Optimizer/dfa_pass.o
Zend/Optimizer/zend_ssa.o Zend/Optimizer/zend_inference.o
Zend/Optimizer/zend_func_info.o Zend/Optimizer/zend_call_graph.o
Zend/Optimizer/sccp.o Zend/Optimizer/scdf.o Zend/Optimizer/dce.o
Zend/Optimizer/escape_analysis.o Zend/Optimizer/compact_vars.o
Zend/Optimizer/zend_dump.o main/internal_functions_cli.o sapi/cli/php_cli.o
sapi/cli/php_http_parser.o sapi/cli/php_cli_server.o sapi/cli/ps_title.o
sapi/cli/php_cli_process_title.o -lcrypt -lutil -lm -L/usr/local/lib -lxml2
-lssl -lcrypto -lpcre2-8 -largon2 -lz -lssl -lcrypto -lcrypt -lrt -o
sapi/cli/php
...
Installing PHP CLI binary:       
/usr/ports/lang/php83/work/stage/usr/local/bin/
Installing PHP CLI man page:     
/usr/ports/lang/php83/work/stage/usr/local/share/man/man1/
Installing phpdbg binary:        
/usr/ports/lang/php83/work/stage/usr/local/bin/
Installing phpdbg man page:      
/usr/ports/lang/php83/work/stage/usr/local/share/man/man1/
Installing PHP CGI binary:       
/usr/ports/lang/php83/work/stage/usr/local/bin/
Installing PHP CGI man page:     
/usr/ports/lang/php83/work/stage/usr/local/share/man/man1/
Installing build environment:    
/usr/ports/lang/php83/work/stage/usr/local/lib/php/build/
Installing header files:         
/usr/ports/lang/php83/work/stage/usr/local/include/php/
Installing helper programs:      
/usr/ports/lang/php83/work/stage/usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:            
/usr/ports/lang/php83/work/stage/usr/local/share/man/man1/
  page: phpize.1
  page: php-config.1
install  -m 0644 /usr/ports/lang/php83/work/php-8.3.30/php.ini-development
/usr/ports/lang/php83/work/php-8.3.30/php.ini-production 
/usr/ports/lang/php83/work/php.conf
/usr/ports/lang/php83/work/stage//usr/local/etc
/usr/bin/strip /usr/ports/lang/php83/work/stage/usr/local/bin/php-cgi
/usr/bin/strip /usr/ports/lang/php83/work/stage/usr/local/bin/php
====> Compressing man pages (compress-man)

# elfctl /usr/ports/lang/php83/work/stage/usr/local/bin/php
File '/usr/ports/lang/php83/work/stage/usr/local/bin/php' features:
noaslr          'Disable ASLR' is unset.
noprotmax       'Disable implicit PROT_MAX' is unset.
nostackgap      'Disable stack gap' is unset.
wxneeded        'Requires W+X mappings' is unset.
la48            'amd64: Limit user virtual addresses to 48 bits' is unset.
la57            'amd64: Allow the use of 57-bit virtual addresses when
available' is unset.

# make install
# elfctl /usr/local/bin/php
noaslr          'Disable ASLR' is unset.

Result: noaslr option is not set - it is set during build phase, but
stage phase relinks php again and this binary is installed without +noaslr 
option

How to fix - change Makefile to: 

NOASLR_USES=    elfctl:stage


.  if ${PORT_OPTIONS:MNOASLR}
.    if ${PORT_OPTIONS:MCLI}
ELF_FEATURES+=+noaslr:/usr/local/bin/php
.    endif
.    if ${PORT_OPTIONS:MCGI}
ELF_FEATURES+=+noaslr:/usr/local/bin/php-cgi
.    endif
.    if ${PORT_OPTIONS:MPHPDBG}
ELF_FEATURES+=+noaslr:/usr/local/bin/phpdbg
.    endif
.    if ${PORT_OPTIONS:MFPM}
ELF_FEATURES+=+noaslr:/usr/local/sbin/php-fpm
.    endif
.  endif

-- 
You are receiving this mail because:
You are the assignee for the bug.