Skip to content

Instantly share code, notes, and snippets.

@iluuu1994
Last active October 21, 2022 10:41
Show Gist options
  • Select an option

  • Save iluuu1994/288bd892b8e82b0cc81f3b723e359686 to your computer and use it in GitHub Desktop.

Select an option

Save iluuu1994/288bd892b8e82b0cc81f3b723e359686 to your computer and use it in GitHub Desktop.
GH-9746
#!/bin/bash
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
autoconf \
bison \
ca-certificates \
gcc \
libsqlite3-dev \
libssl-dev \
libxml2-dev \
libzip-dev \
make \
openssl \
pkg-config \
re2c \
sed
make distclean; ./buildconf --force
./configure \
CFLAGS="-DZEND_TRACK_ARENA_ALLOC" \
--enable-address-sanitizer \
--enable-debug \
--enable-undefined-sanitizer \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-openssl \
--with-zip
make -j$(nproc)
make install
mkdir -p /etc/php.d
cat <<'EOF' > /etc/php.d/opcache.ini
zend_extension=opcache.so
opcache.enable_cli=1
opcache.protect_memory=1
opcache.jit_buffer_size=1G
EOF
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
rm -rf symfony_demo
composer create-project symfony/symfony-demo symfony_demo --no-progress --ignore-platform-reqs
cd symfony_demo
sed -i 's/PHP_SAPI/"cli-server"/g' var/cache/dev/App_KernelDevDebugContainer.preload.php
UBSAN_OPTIONS=print_stacktrace=1 USE_ZEND_ALLOC=0 USE_TRACKED_ALLOC=1 php -d opcache.preload=var/cache/dev/App_KernelDevDebugContainer.preload.php public/index.php
  • Move install.sh to the project root
  • chmod +x install.sh
  • Adjust this line to if (false) {
  • docker run --rm -it --entrypoint bash --mount src="$(pwd)",target=/php,type=bind ubuntu:22.04
  • cd /php
  • ./install.sh

After that, you can make changes locally, and retest with:

  • make -j$(nproc)
  • cd symfony_demo
  • UBSAN_OPTIONS=print_stacktrace=1 USE_ZEND_ALLOC=0 USE_TRACKED_ALLOC=1 php -d opcache.preload=var/cache/dev/App_KernelDevDebugContainer.preload.php public/index.php
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment