Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Drop PHP 7.4 support - #7924

Merged
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45
Sep 23, 2023
Merged

Drop PHP 7.4 support#7924
kenjis merged 11 commits into
codeigniter4:4.5from
kenjis:drop-php-7.4-CI45

Conversation

@kenjis

@kenjiskenjis commented Sep 11, 2023

Copy link
Copy Markdown
Member

Description
See #6921
Supersedes #6922

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@kenjiskenjis added the 4.5 label Sep 11, 2023
@kenjis
kenjis marked this pull request as draft September 11, 2023 07:55
@kenjis
kenjis marked this pull request as ready for review September 11, 2023 08:04
@kenjiskenjis added the refactor Pull requests that refactor code label Sep 11, 2023
Comment thread.github/workflows/test-rector.yml
@michalsn

Copy link
Copy Markdown
Member

I don't know when v4.5 will be released, but currently, PHP 7.4 is still used by more than 20% of 4.4 users.

https://packagist.org/packages/codeigniter4/framework/php-stats#4.4

@kenjis

Copy link
Copy Markdown
MemberAuthor

The release of 4.5 will be after the release of PHP 8.3, no matter how soon.
By then it will be more than a year since PHP 7.4 EOL.

Comment threadadmin/starter/.github/workflows/phpunit.yml Outdated
@kenjis

Copy link
Copy Markdown
MemberAuthor

auto-label failed.

Run prince-chrismc/label-merge-conflicts-action@v3
🔎 Gather data for Pull Request #7924
🏷️ Updating labels
#7924 has a mismatching SHA's
Labeling #7924...
Error: GraphqlResponseError: Request failed due to following response errors:
- Resource not accessible by integration

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549712/job/16739374912

@ddevsr

Copy link
Copy Markdown
Collaborator

@kenjis By https://github.com/prince-chrismc/label-merge-conflicts-action#faq---how-do-i-fix-resource-not-accessible-by-integration

We already set minimum permission

permissions:
issues: write
pull-requests: write

@datamweb

Copy link
Copy Markdown
Contributor

I don't know, but isn't there a difference between github_token: ${{ secrets.GITHUB_TOKEN }} and github_token: ${{ github.token }}?

@ddevsr

Copy link
Copy Markdown
Collaborator

@datamweb I agree,

Different :

- uses: prince-chrismc/label-merge-conflicts-action@v3
with:
conflict_label_name: 'stale'
github_token: ${{ github.token }}
uses: actions/checkout@v4
with:
repository: codeigniter4/api
token: ${{ secrets.ACCESS_TOKEN }}

Parameter with.token or with.github_token is true configuration?

https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/deploy-apidocs.yml#L40
https://github.com/codeigniter4/CodeIgniter4/blob/develop/.github/workflows/label-conflict.yml#L24

@kenjis

kenjis commented Sep 13, 2023

Copy link
Copy Markdown
MemberAuthor

They are the same.

At the start of each workflow job, GitHub automatically creates a unique GITHUB_TOKEN secret to use in your workflow. You can use the GITHUB_TOKEN to authenticate in the workflow job.
...
The token is also available in the github.token context. For more information, see "Contexts."
https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret

@MGatner

Copy link
Copy Markdown
Member

Any ideas on the other failure? I will try rerunning.

PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Upload coverage results to Coveralls / coveralls

Run vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
vendor/bin/phpcov merge --clover build/logs/clover.xml build/cov
shell: /usr/bin/bash -e {0}
env:
COMPOSER_PROCESS_TIMEOUT: 0
COMPOSER_NO_INTERACTION: 1
COMPOSER_NO_AUDIT: 1
COMPOSER_CACHE_FILES_DIR: /home/runner/.cache/composer/files
phpcov 8.2.1 by Sebastian Bergmann.
PHP Fatal error: Uncaught Error: Class "Config\Autoload" not found in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php:16
Stack trace:
#0 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(578): include_once()
#1 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(176): SebastianBergmann\CodeCoverage\CodeCoverage->processUncoveredFilesFromFilter()
#2 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Node/Builder.php(44): SebastianBergmann\CodeCoverage\CodeCoverage->getData()
#3 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(136): SebastianBergmann\CodeCoverage\Node\Builder->build()
#4 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/php-code-coverage/src/Report/Clover.php(53): SebastianBergmann\CodeCoverage\CodeCoverage->getReport()
#5 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Command.php(88): SebastianBergmann\CodeCoverage\Report\Clover->process()
#6 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/MergeCommand.php(84): SebastianBergmann\PHPCOV\Command->handleReports()
#7 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/src/cli/Application.php(47): SebastianBergmann\PHPCOV\MergeCommand->run()
#8 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/phpunit/phpcov/phpcov(30): SebastianBergmann\PHPCOV\Application->run()
#9 /home/runner/work/CodeIgniter4/CodeIgniter4/vendor/bin/phpcov(119): include('...')
#10 {main}
thrown in /home/runner/work/CodeIgniter4/CodeIgniter4/system/Test/Mock/MockAutoload.php on line 16
Generating code coverage report in Clover XML format ... Error: Process completed with exit code 255.

https://github.com/codeigniter4/CodeIgniter4/actions/runs/6167549719/job/16751771845?pr=7924

@kenjis

kenjis commented Sep 14, 2023

Copy link
Copy Markdown
MemberAuthor

Created an issue #7941

@kenjis

kenjis commented Sep 17, 2023

Copy link
Copy Markdown
MemberAuthor

It seems unethical to continue to support an unmaintained PHP version.

If someone needs using PHP 7.4, s/he can use v4.4.
There are no vulnerabilities reported and the framework itself seems quite secure,
and is still maintained until v4.5 is released.

@michalsn

Copy link
Copy Markdown
Member

Personally, I'm not against abandoning PHP 7.4. However, if we draw the line based on the officially supported version of PHP and not what our users actually use, then supporting PHP 8.0 after November 26, 2023, will also be "unethical".

What's more... according to composer stats, the percentage of users using 8.0 is smaller than those using 7.4.

If we want to say "Use CI 4.4 if you need support for an unsupported version of PHP," then it would be more natural to introduce PHP 8.1 as a minimum version for CI 4.5 release.

@kenjis

Copy link
Copy Markdown
MemberAuthor

I would like to merge this.
Approve if you don't oppose.

@kenjis

Copy link
Copy Markdown
MemberAuthor

No one objects, so I merge.

@kenjis
kenjis merged commit 760dbf4 into codeigniter4:4.5Sep 23, 2023
@kenjis
kenjis deleted the drop-php-7.4-CI45 branch September 23, 2023 11:49
@kenjiskenjis mentioned this pull request Sep 23, 2023
4 tasks
@MGatner

Copy link
Copy Markdown
Member

I'm good with this.

@michalsn I am generally in favor of keeping our supported versions in line with PHP, while also recognizing driving factors. Often time is just our biggest bottleneck - we haven't always been compatible with new versions of PHP on their release, which is a much higher priority. On the bottom end we are motivated to drop versions that prevent us from adopting features. The feature set of PHP 7.4 => 8 is way more enticing than 8.0 => 8.1, so while I agree it would be better to keep consistency there's also less motivation among all the work competing for priority.

@kenjiskenjis mentioned this pull request Oct 13, 2023
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactorPull requests that refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@kenjis@michalsn@ddevsr@datamweb@MGatner@samsonasik@TimexPeachtree@paulbalandan