No Code Attached Yet PHP 8.x
avatar akuropka
akuropka
20 Jul 2021

Steps to reproduce the issue

Go to Content > Articles and open any article.

Expected result

Article is shown and ready to edit.

Actual result

Page itself loads incl. editor but there's no title, alias and content. Source code shows nothing either.

System information (as much as possible)

Windows Server 2016 Datacenter x64
Version 1607 [14393.4530]
Intel Xeon E5-2630 v4 @ 2.2 GHz with 12GB RAM
IIS with PHP_fastcgi configured (php-cgi.exe)
MariaDB 10.6.3 x64
PHP 8.1.0-dev x64 (works with PHP 8.0.10-dev and below)

Additional comments

20210720_151349_firefox
php.txt
error.log

avatar akuropka akuropka - open - 20 Jul 2021
avatar joomla-cms-bot joomla-cms-bot - change - 20 Jul 2021
Labels Added: ?
avatar joomla-cms-bot joomla-cms-bot - labeled - 20 Jul 2021
avatar akuropka akuropka - change - 20 Jul 2021
The description was changed
avatar akuropka akuropka - edited - 20 Jul 2021
avatar akuropka akuropka - change - 20 Jul 2021
The description was changed
avatar akuropka akuropka - edited - 20 Jul 2021
avatar zero-24
zero-24 - comment - 27 Jul 2021

hmm the error log only lists "warnings" and no errors. I dont have access to an PHP 8.1.0 install nor does it seem that there is a xampp build there yet to debug. But the warnings hints about that this call here: https://github.com/joomla/joomla-cms/blob/3.10-dev/administrator/components/com_content/models/article.php#L308 fails can you check what happen when you change that code to the following and whether there are other issues reported when you set the error reporting to maximum?

		$item = parent::getItem($pk)
		if ($item)
		{
avatar akuropka
akuropka - comment - 27 Jul 2021

With log reporting set to maximum the page (fe/be) doesn't show up.
Below the output (with the ultimate error at the end):
Deprecated: The Serializable interface is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\input\src\Input.php on line 41 Deprecated: Return type of Joomla\Input\Input::count() should either be compatible with Countable::count(): int, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\input\src\Input.php on line 170 Deprecated: The Serializable interface is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in C:\Inetpub\wwwroot\www\libraries\src\Input\Input.php on line 31 Deprecated: Return type of Joomla\Registry\Registry::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 126 Deprecated: Return type of Joomla\Registry\Registry::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 439 Deprecated: Return type of Joomla\Registry\Registry::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 453 Deprecated: Return type of Joomla\Registry\Registry::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 468 Deprecated: Return type of Joomla\Registry\Registry::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 482 Deprecated: Return type of Joomla\Registry\Registry::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 288 Deprecated: Return type of Joomla\Registry\Registry::count() should either be compatible with Countable::count(): int, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\registry\src\Registry.php on line 112 Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in C:\Inetpub\wwwroot\www\libraries\src\Application\WebApplication.php on line 1256 Deprecated: Automatic conversion of false to array is deprecated in C:\Inetpub\wwwroot\www\libraries\vendor\joomla\uri\src\UriHelper.php on line 50 Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in C:\Inetpub\wwwroot\www\libraries\src\Application\WebApplication.php on line 1305 Deprecated: Return type of Joomla\CMS\Session\Session::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\Inetpub\wwwroot\www\libraries\src\Session\Session.php on line 298 Warning: session_name(): Session name cannot be changed after headers have already been sent in C:\Inetpub\wwwroot\www\libraries\joomla\session\handler\native.php on line 128 Deprecated: The Serializable interface is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in C:\Inetpub\wwwroot\www\libraries\src\Input\Cookie.php on line 105 Warning: session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in C:\Inetpub\wwwroot\www\libraries\joomla\session\handler\native.php on line 235 Error: Failed to start application: Failed to start the session because headers have already been sent by "C:\Inetpub\wwwroot\www\libraries\vendor\joomla\input\src\Input.php" at line 41.
Adjusting article.php as mentioned does not help. With PHP 8.0 page is loading.

avatar joeforjoomla
joeforjoomla - comment - 27 Jul 2021

Actually PHP 8.1 introduces a lot of breaking changes and there will be a massive work to update the code of Joomla 3 and Joomla 4 in next months in order to have them compatible with PHP 8.1

avatar PhilETaylor
PhilETaylor - comment - 28 Jul 2021
avatar Quy Quy - change - 19 Jan 2022
Labels Added: No Code Attached Yet ?
Removed: ?
avatar Quy Quy - labeled - 19 Jan 2022
avatar joomdonation joomdonation - close - 12 Nov 2022
avatar joomdonation
joomdonation - comment - 12 Nov 2022

Joomla 3 is now in maintenance mode and will only receive security fixes, so this is something (if valid) won't be fixed. Therefore, I'm closing this issue (Joomla 4 is working well with PHP 8.1 and does not have this error).

avatar joomdonation joomdonation - change - 12 Nov 2022
Status New Closed
Closed_Date 0000-00-00 00:00:00 2022-11-12 11:25:47
Closed_By joomdonation
Labels Added: PHP 8.x
Removed: ?

Add a Comment

Login with GitHub to post a comment