From af8cbdeed7b43951301e906bf73cabd948a9299a Mon Sep 17 00:00:00 2001 From: sapics Date: Sat, 16 Jan 2021 16:10:19 +0900 Subject: Fix error in core/Output.php for php8.0 Fix error in array_shift array_map('array_shift', $this->headers) causes error as array_shift(): Argument bcit-ci#1 ($array) must be passed by reference, value given --- system/core/Output.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/system/core/Output.php b/system/core/Output.php index c56aff4b0..02c6d151b 100644 --- a/system/core/Output.php +++ b/system/core/Output.php @@ -300,9 +300,13 @@ class CI_Output { public function get_header($header) { // Combine headers already sent with our batched headers + $headers = array(); + foreach ($this->headers as $value) + { + $headers[] = $value[0]; + } $headers = array_merge( - // We only need [x][0] from our multi-dimensional array - array_map('array_shift', $this->headers), + $headers, headers_list() ); -- cgit v1.2.3-24-g4f1b From 624ddad97028087ee4d61ab90827b944a192f65e Mon Sep 17 00:00:00 2001 From: sapics Date: Sat, 16 Jan 2021 16:10:57 +0900 Subject: Fix error in pdo/pgsql for php8.0 From PHP8.0, default PDO::ATTR_ERRMODE is changed from PDO::ERRMODE_SILENT to PDO::ERRMODE_EXCEPTION. Reference: https://wiki.php.net/rfc/pdo_default_errmode --- system/database/DB_driver.php | 2 +- system/database/drivers/pdo/pdo_driver.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php index cba96d9a2..a213d5cba 100644 --- a/system/database/DB_driver.php +++ b/system/database/DB_driver.php @@ -825,7 +825,7 @@ abstract class CI_DB_driver { { return $this->_trans_status; } - + // -------------------------------------------------------------------- /** diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php index d0a2bf959..b2178b684 100644 --- a/system/database/drivers/pdo/pdo_driver.php +++ b/system/database/drivers/pdo/pdo_driver.php @@ -131,6 +131,14 @@ class CI_DB_pdo_driver extends CI_DB { $this->options[PDO::ATTR_PERSISTENT] = TRUE; } + // From PHP8.0, default PDO::ATTR_ERRMODE is changed + // from PDO::ERRMODE_SILENT to PDO::ERRMODE_EXCEPTION + // as https://wiki.php.net/rfc/pdo_default_errmode + if ( ! isset($this->options[PDO::ATTR_ERRMODE])) + { + $this->options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_SILENT; + } + try { return new PDO($this->dsn, $this->username, $this->password, $this->options); -- cgit v1.2.3-24-g4f1b From 5ad670dea78cc0f0c0fd690220a243a905cb06bf Mon Sep 17 00:00:00 2001 From: sapics Date: Sat, 16 Jan 2021 16:13:37 +0900 Subject: Replace travis-ci to github actions for php8.0 --- .github/workflows/test-phpunit.yml | 106 +++++++++++++++++++++++++++++ .travis.yml | 109 ------------------------------ tests/mocks/database/config/mysql.php | 10 +-- tests/mocks/database/config/mysqli.php | 10 +-- tests/mocks/database/config/pdo/mysql.php | 14 ++-- tests/mocks/database/config/pdo/pgsql.php | 4 +- tests/mocks/database/config/pgsql.php | 4 +- 7 files changed, 127 insertions(+), 130 deletions(-) create mode 100644 .github/workflows/test-phpunit.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/test-phpunit.yml b/.github/workflows/test-phpunit.yml new file mode 100644 index 000000000..bba336ce7 --- /dev/null +++ b/.github/workflows/test-phpunit.yml @@ -0,0 +1,106 @@ +name: PHPUnit + +on: [push, pull_request] + +jobs: + tests: + runs-on: ubuntu-18.04 + if: "!contains(github.event.head_commit.message, '[ci skip]')" + env: + PHP_INI_VALUES: assert.exception=1, zend.assertions=1 + + strategy: + fail-fast: false + matrix: + php: [ '8.0', '7.4', '7.3', '7.2', '7.1', '7.0', '5.6', '5.5', '5.4' ] + DB: [ 'pdo/mysql', 'pdo/pgsql', 'pdo/sqlite', 'mysqli', 'pgsql', 'sqlite' ] + compiler: [ default ] + include: + - php: '8.0' + DB: 'pdo/mysql' + compiler: jit + - php: '8.0' + DB: 'pdo/pgsql' + compiler: jit + - php: '8.0' + DB: 'pdo/sqlite' + compiler: jit + - php: '8.0' + DB: 'mysqli' + compiler: jit + - php: '8.0' + DB: 'pgsql' + compiler: jit + - php: '8.0' + DB: 'sqlite' + compiler: jit + - php: '5.6' + DB: 'mysql' + compiler: default + - php: '5.5' + DB: 'mysql' + compiler: default + - php: '5.4' + DB: 'mysql' + compiler: default + + services: + postgres: + image: postgres:12 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: ci_test + ports: + - 5432:5432 + options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3 + + mysql: + image: mysql:5.7 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: true + MYSQL_USER: travis + MYSQL_PASSWORD: travis + MYSQL_DATABASE: ci_test + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Override PHP ini values for JIT compiler + if: matrix.compiler == 'jit' + run: echo "PHP_INI_VALUES::assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=64M" >> $GITHUB_ENV + + - name: Install PHP${{ matrix.php }} - DB ${{ matrix.DB }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer, pecl + extensions: imagick, sqlite3, pgsql, mysqli, pdo, pdo_mysql, pdo_pgsql, pdo_sqlite + ini-values: ${{ env.PHP_INI_VALUES }} + coverage: xdebug + + - name: Setup composer for PHP8.0+ + run: if [ '${{ matrix.php }}' = '8.0' ] || [ '${{ matrix.php }}' = '8.1' ] ; then sed -i 's/phpunit\/phpunit/sminnee\/phpunit/g' composer.json; composer config -g platform.php 7.4.11; fi + - name: Get composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Cache composer dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + - name: Install composer dependencies + run: composer install --no-progress --prefer-dist --optimize-autoloader + + - name: Fix error in vfsStream + run: sed -i s/name{0}/name[0]/ vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStream.php + + - name: PHPUnit Test + run: | + php -d zend.enable_gc=0 -d date.timezone=UTC -d mbstring.func_overload=7 -d mbstring.internal_encoding=UTF-8 vendor/bin/phpunit --coverage-text --configuration tests/travis/${{ matrix.DB }}.phpunit.xml + env: + XDEBUG_MODE: coverage diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5070c24c2..000000000 --- a/.travis.yml +++ /dev/null @@ -1,109 +0,0 @@ -language: php -os: linux -dist: xenial - -php: - - 5.6 - - 7.0 - - 7.1 - - 7.2 - - 7.3 - - 7.4 - - nightly - -env: - - DB=mysqli - - DB=pgsql - - DB=sqlite - - DB=pdo/mysql - - DB=pdo/pgsql - - DB=pdo/sqlite - -services: - - mysql - - postgresql - -cache: - directories: - - $HOME/.composer/cache - -before_script: - - sh -c "composer install --no-progress" - - sh -c "if [ '$DB' = 'pgsql' ] || [ '$DB' = 'pdo/pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS ci_test;' -U postgres; fi" - - sh -c "if [ '$DB' = 'pgsql' ] || [ '$DB' = 'pdo/pgsql' ]; then psql -c 'create database ci_test;' -U postgres; fi" - - sh -c "if [ '$DB' = 'mysql' ] || [ '$DB' = 'mysqli' ] || [ '$DB' = 'pdo/mysql' ]; then mysql -e 'create database IF NOT EXISTS ci_test;'; fi" - -script: php -d zend.enable_gc=0 -d date.timezone=UTC -d mbstring.func_overload=7 -d mbstring.internal_encoding=UTF-8 vendor/bin/phpunit --coverage-text --configuration tests/travis/$DB.phpunit.xml - -jobs: - allow_failures: - - php: nightly - - php: hhvm-3.30 - include: - - php: 5.4 - dist: trusty - env: DB=mysql - - php: 5.4 - dist: trusty - env: DB=mysqli - - php: 5.4 - dist: trusty - env: DB=pgsql - - php: 5.4 - dist: trusty - env: DB=sqlite - - php: 5.4 - dist: trusty - env: DB=pdo/mysql - - php: 5.4 - dist: trusty - env: DB=pdo/pgsql - - php: 5.4 - dist: trusty - env: DB=pdo/sqlite - - php: 5.5 - dist: trusty - env: DB=mysql - - php: 5.5 - dist: trusty - env: DB=mysqli - - php: 5.5 - dist: trusty - env: DB=pgsql - - php: 5.5 - dist: trusty - env: DB=sqlite - - php: 5.5 - dist: trusty - env: DB=pdo/mysql - - php: 5.5 - dist: trusty - env: DB=pdo/pgsql - - php: 5.5 - dist: trusty - env: DB=pdo/sqlite - - php: 5.6 - dist: xenial - env: DB=mysql - - php: hhvm-3.30 - dist: trusty - env: DB=mysql - - php: hhvm-3.30 - dist: trusty - env: DB=mysqli - - php: hhvm-3.30 - dist: trusty - env: DB=sqlite - - php: hhvm-3.30 - dist: trusty - env: DB=pdo/mysql - - php: hhvm-3.30 - dist: trusty - env: DB=pdo/sqlite - -branches: - only: - - develop - - 3.0-stable - - 3.1-stable - - /^feature\/.+$/ diff --git a/tests/mocks/database/config/mysql.php b/tests/mocks/database/config/mysql.php index a590b9f53..ca30cb9ca 100644 --- a/tests/mocks/database/config/mysql.php +++ b/tests/mocks/database/config/mysql.php @@ -5,9 +5,9 @@ return array( // Typical Database configuration 'mysql' => array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'travis', - 'password' => '', + 'password' => 'travis', 'database' => 'ci_test', 'dbdriver' => 'mysql' ), @@ -15,7 +15,7 @@ return array( // Database configuration with failover 'mysql_failover' => array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'not_travis', 'password' => 'wrong password', 'database' => 'not_ci_test', @@ -23,9 +23,9 @@ return array( 'failover' => array( array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'travis', - 'password' => '', + 'password' => 'travis', 'database' => 'ci_test', 'dbdriver' => 'mysql', ) diff --git a/tests/mocks/database/config/mysqli.php b/tests/mocks/database/config/mysqli.php index 5dd08abb2..fd8fec962 100644 --- a/tests/mocks/database/config/mysqli.php +++ b/tests/mocks/database/config/mysqli.php @@ -5,9 +5,9 @@ return array( // Typical Database configuration 'mysqli' => array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'travis', - 'password' => '', + 'password' => 'travis', 'database' => 'ci_test', 'dbdriver' => 'mysqli' ), @@ -15,7 +15,7 @@ return array( // Database configuration with failover 'mysqli_failover' => array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'not_travis', 'password' => 'wrong password', 'database' => 'not_ci_test', @@ -23,9 +23,9 @@ return array( 'failover' => array( array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'travis', - 'password' => '', + 'password' => 'travis', 'database' => 'ci_test', 'dbdriver' => 'mysqli', ) diff --git a/tests/mocks/database/config/pdo/mysql.php b/tests/mocks/database/config/pdo/mysql.php index 96608f787..89e9fb130 100644 --- a/tests/mocks/database/config/pdo/mysql.php +++ b/tests/mocks/database/config/pdo/mysql.php @@ -4,10 +4,10 @@ return array( // Typical Database configuration 'pdo/mysql' => array( - 'dsn' => 'mysql:host=localhost;dbname=ci_test', - 'hostname' => 'localhost', + 'dsn' => 'mysql:host=127.0.0.1;dbname=ci_test', + 'hostname' => '127.0.0.1', 'username' => 'travis', - 'password' => '', + 'password' => 'travis', 'database' => 'ci_test', 'dbdriver' => 'pdo', 'subdriver' => 'mysql' @@ -16,7 +16,7 @@ return array( // Database configuration with failover 'pdo/mysql_failover' => array( 'dsn' => '', - 'hostname' => 'localhost', + 'hostname' => '127.0.0.1', 'username' => 'not_travis', 'password' => 'wrong password', 'database' => 'not_ci_test', @@ -24,10 +24,10 @@ return array( 'subdriver' => 'mysql', 'failover' => array( array( - 'dsn' => 'mysql:host=localhost;dbname=ci_test', - 'hostname' => 'localhost', + 'dsn' => 'mysql:host=127.0.0.1;dbname=ci_test', + 'hostname' => '127.0.0.1', 'username' => 'travis', - 'password' => '', + 'password' => 'travis', 'database' => 'ci_test', 'dbdriver' => 'pdo', 'subdriver' => 'mysql' diff --git a/tests/mocks/database/config/pdo/pgsql.php b/tests/mocks/database/config/pdo/pgsql.php index e55e3ea77..846c70be9 100644 --- a/tests/mocks/database/config/pdo/pgsql.php +++ b/tests/mocks/database/config/pdo/pgsql.php @@ -7,7 +7,7 @@ return array( 'dsn' => 'pgsql:host=localhost;port=5432;dbname=ci_test;', 'hostname' => 'localhost', 'username' => 'postgres', - 'password' => '', + 'password' => 'postgres', 'database' => 'ci_test', 'dbdriver' => 'pdo', 'subdriver' => 'pgsql' @@ -27,7 +27,7 @@ return array( 'dsn' => 'pgsql:host=localhost;port=5432;dbname=ci_test;', 'hostname' => 'localhost', 'username' => 'postgres', - 'password' => '', + 'password' => 'postgres', 'database' => 'ci_test', 'dbdriver' => 'pdo', 'subdriver' => 'pgsql' diff --git a/tests/mocks/database/config/pgsql.php b/tests/mocks/database/config/pgsql.php index 1444b0066..ce4583728 100644 --- a/tests/mocks/database/config/pgsql.php +++ b/tests/mocks/database/config/pgsql.php @@ -7,7 +7,7 @@ return array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'postgres', - 'password' => '', + 'password' => 'postgres', 'database' => 'ci_test', 'dbdriver' => 'postgre' ), @@ -25,7 +25,7 @@ return array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'postgres', - 'password' => '', + 'password' => 'postgres', 'database' => 'ci_test', 'dbdriver' => 'postgre', ) -- cgit v1.2.3-24-g4f1b