View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000505 | WackoWiki | core | public | 2018-11-15 14:13 | 2018-11-19 14:16 |
| Reporter | MartinRaatz | Assigned To | administrator | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | 5.5.6 | ||||
| Target Version | 5.5.7 | Fixed in Version | 5.5.7 | ||
| Summary | 0000505: Wacko crashes with installed php-gmp | ||||
| Description | [15-Nov-2018 14:51:48 Europe/Berlin] PHP Fatal error: Uncaught Error: Call to undefined method GMP::intval() in /var/www/wacko1/lib/hashids/Hashids.php:177 Stack trace: #0 /var/www/wacko1/action/hashid.php(30): Hashids->encode(Array) #1 /var/www/wacko1/class/wacko.php(4997): include('/var/www/wacko1...') #2 /var/www/wacko1/class/wacko.php(5066): Wacko->include_buffered('hashid.php', 'Unbekannte ...', Array, 'action') #3 /var/www/wacko1/theme/default/appearance/footer.php(59): Wacko->action('hashid') 0000004 /var/www/wacko1/class/wacko.php(4997): include('/var/www/wacko1...') #5 /var/www/wacko1/class/wacko.php(5044): Wacko->include_buffered('footer.php', 'Layout ist besc...', '', 'theme/default/a...') 0000006 /var/www/wacko1/class/wacko.php(7025): Wacko->theme_footer('') 0000007 /var/www/wacko1/index.php(63): Wacko->run('Startseite', 'show') 0000008 {main} thrown in /var/www/wacko1/lib/hashids/Hashids.php on line 177 | ||||
| Steps To Reproduce | enable php-gmp on Fedora 29 with PHP 7.2.11 | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| related to | 0000504 | resolved | administrator | templatest: no main template found in handler/page/template/show.tpl |
|
|
Note: Hashids requires either the BC Math or GMP extension in order to work. As mentioned in the related bug, this looks like a dependency issue of the hashid lib regarding GMP. https://secure.php.net/manual/en/book.gmp.php "Call to undefined method GMP::intval()" indicates a missing or wrong linking/path. https://bitbucket.org/wackowiki/wackowiki-dev/src/2efa1ea93ca7c8b3729a8f47438b29839aa710e6/wacko/lib/hashids/Math/Gmp.php?at=default&fileviewer=file-view-default https://bitbucket.org/wackowiki/wackowiki-dev/src/2efa1ea93ca7c8b3729a8f47438b29839aa710e6/wacko/config/autoload.conf?at=default&fileviewer=file-view-default Can you try it again with the BC Math extension. https://secure.php.net/manual/en/book.bc.php |
|
|
BC Math and GMP are installed as dependicies of phpMyAdmin When I disable GMP Hashids my installation runs fine. |
|
|
So this can be a namespace issue? As you can see the original namespaces were commented out. If we use the original namespaces again and add them to autoload.conf accordingly, GMP::intval() might work? lib/hashids/Math/Gmp.php Gmp -> lib/hashids/Math/Gmp.php Hashids\Math\Gmp |
|
|
When I try "lib/hashids/Math/Gmp.php Hashids\Math\Gmp", i get: [15-Nov-2018 17:06:47 Europe/Berlin] PHP Fatal error: Uncaught Error: Call to undefined method GMP::greaterThan() in /var/www/wacko/lib/hashids/Hashids.php:256 Stack trace: #0 /var/www/wacko/class/urirouter.php(251): Hashids->decode('Anleitungen') #1 /var/www/wacko/class/urirouter.php(77): UriRouter->route(Array) #2 /var/www/wacko/index.php(16): UriRouter->run(Array) #3 {main} thrown in /var/www/wacko/lib/hashids/Hashids.php on line 256 my only solution is changing the order in wacko/lib/hashids/Hashids.php:protected function getMathExtension() |
|
|
Thanks for the feedback. At least a hotfix is found but this solves not the issue at the core. The issue needs further investigation. I assume a namespace conflict with GMP::function(), if so we should reinstate all out commented namespaces within the hashid lib and add them to autoload.conf. |
|
|
I added in this patch the original namespace for hashids. When it threw the error message "Uncaught Error: Call to undefined method GMP::intval()" either there is a wrong naming/typo in the autoload.conf or there is a namespace issue, another class with the same name is loaded, or did I miss something? Can you test the patch with the original order in the getMathExtension() function. hashids_namespace.patch (3,752 bytes)
diff --git a/wacko/action/hashid.php b/wacko/action/hashid.php
--- a/wacko/action/hashid.php
+++ b/wacko/action/hashid.php
@@ -7,6 +7,8 @@
// {{hashid}}
+// Import the Hashids class into the global namespace
+use Hashids\Hashids;
$hashids = new Hashids($this->db->hashid_seed);
if (isset($this->page['version_id']))
diff --git a/wacko/class/urirouter.php b/wacko/class/urirouter.php
--- a/wacko/class/urirouter.php
+++ b/wacko/class/urirouter.php
@@ -6,6 +6,8 @@
{
exit;
}
+// Import the Hashids class into the global namespace
+use Hashids\Hashids;
class UriRouter
{
diff --git a/wacko/config/autoload.conf b/wacko/config/autoload.conf
--- a/wacko/config/autoload.conf
+++ b/wacko/config/autoload.conf
@@ -17,11 +17,11 @@
formatter/class/typografica.php Typografica
formatter/class/wackoformatter.php WackoFormatter
lib/safehtml/safehtml.php SafeHTML
-lib/hashids/Hashids.php Hashids
-lib/hashids/HashidsInterface.php HashidsInterface
-lib/hashids/Math/Bc.php Bc
-lib/hashids/Math/Gmp.php Gmp
-lib/hashids/Math/MathInterface.php MathInterface
+lib/hashids/Hashids.php Hashids\Hashids
+lib/hashids/HashidsInterface.php Hashids\HashidsInterface
+lib/hashids/Math/Bc.php Hashids\Math\Bc
+lib/hashids/Math/Gmp.php Hashids\Math\Gmp
+lib/hashids/Math/MathInterface.php Hashids\Math\MathInterface
lib/php-diff/Diff.php Diff
lib/php-diff/Diff/Renderer/Html/Array.php Diff_Renderer_Html_Array
lib/php-diff/Diff/Renderer/Html/Inline.php Diff_Renderer_Html_Inline
diff --git a/wacko/lib/hashids/Hashids.php b/wacko/lib/hashids/Hashids.php
--- a/wacko/lib/hashids/Hashids.php
+++ b/wacko/lib/hashids/Hashids.php
@@ -9,11 +9,11 @@
* file that was distributed with this source code.
*/
-# namespace Hashids;
+namespace Hashids;
-# use Hashids\Math\Bc;
-# use Hashids\Math\Gmp;
-# use RuntimeException;
+use Hashids\Math\Bc;
+use Hashids\Math\Gmp;
+use RuntimeException;
/**
* This is the hashids class.
diff --git a/wacko/lib/hashids/HashidsException.php b/wacko/lib/hashids/HashidsException.php
--- a/wacko/lib/hashids/HashidsException.php
+++ b/wacko/lib/hashids/HashidsException.php
@@ -9,9 +9,9 @@
* file that was distributed with this source code.
*/
-# namespace Hashids;
+namespace Hashids;
-# use InvalidArgumentException;
+use InvalidArgumentException;
/**
* This is the hashids exception class.
diff --git a/wacko/lib/hashids/HashidsInterface.php b/wacko/lib/hashids/HashidsInterface.php
--- a/wacko/lib/hashids/HashidsInterface.php
+++ b/wacko/lib/hashids/HashidsInterface.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
-# namespace Hashids;
+namespace Hashids;
/**
* This is the hashids interface.
diff --git a/wacko/lib/hashids/Math/Bc.php b/wacko/lib/hashids/Math/Bc.php
--- a/wacko/lib/hashids/Math/Bc.php
+++ b/wacko/lib/hashids/Math/Bc.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
-# namespace Hashids\Math;
+namespace Hashids\Math;
/**
* This is the Bc math class.
diff --git a/wacko/lib/hashids/Math/Gmp.php b/wacko/lib/hashids/Math/Gmp.php
--- a/wacko/lib/hashids/Math/Gmp.php
+++ b/wacko/lib/hashids/Math/Gmp.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
-# namespace Hashids\Math;
+namespace Hashids\Math;
/**
* This is the Gmp math class.
diff --git a/wacko/lib/hashids/Math/MathInterface.php b/wacko/lib/hashids/Math/MathInterface.php
--- a/wacko/lib/hashids/Math/MathInterface.php
+++ b/wacko/lib/hashids/Math/MathInterface.php
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
-# namespace Hashids\Math;
+namespace Hashids\Math;
/**
* Interface for different math extensions.
|
|
|
the patch ist working with the original order in the getMathExtension() |
|
|
Thanks for testing. Committed patch: https://sourceforge.net/p/wackowiki/dev/ci/459ff1dcc628de549cb0bb59b9a4286c13854cbb |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2018-11-15 14:13 | MartinRaatz | New Issue | |
| 2018-11-15 15:04 | administrator | Relationship added | related to 0000504 |
| 2018-11-15 15:20 | administrator | Note Added: 0001012 | |
| 2018-11-15 15:24 | administrator | Note Edited: 0001012 | |
| 2018-11-15 15:39 | administrator | Note Edited: 0001012 | |
| 2018-11-15 15:42 | MartinRaatz | Note Added: 0001013 | |
| 2018-11-15 15:52 | administrator | Note Added: 0001014 | |
| 2018-11-15 15:54 | administrator | Note Edited: 0001014 | |
| 2018-11-15 16:12 | MartinRaatz | Note Added: 0001015 | |
| 2018-11-15 16:26 | administrator | Note Added: 0001016 | |
| 2018-11-15 16:26 | administrator | Assigned To | => administrator |
| 2018-11-15 16:26 | administrator | Status | new => confirmed |
| 2018-11-15 16:28 | administrator | Target Version | => 5.5.7 |
| 2018-11-18 09:00 | administrator | File Added: hashids_namespace.patch | |
| 2018-11-18 09:00 | administrator | Note Added: 0001018 | |
| 2018-11-19 12:00 | MartinRaatz | Note Added: 0001019 | |
| 2018-11-19 14:16 | administrator | Status | confirmed => resolved |
| 2018-11-19 14:16 | administrator | Resolution | open => fixed |
| 2018-11-19 14:16 | administrator | Fixed in Version | => 5.5.7 |
| 2018-11-19 14:16 | administrator | Note Added: 0001020 |