Page 1 of 1
(Solved) [ZM API] PHP Error
Posted: Sat Jan 26, 2019 2:44 pm
by R2D2
Hi,
after a long time, i installed ZM again, but i cannot get working the ZM API.
When i type this in my Browser,
i get this:
Code: Select all
Fatal error: Cannot use 'object' as class name as it is reserved in /usr/share/zoneminder/www/api/lib/Cake/Core/Object.php on line 18
How can i solve this?
Re: [ZM API] PHP Error
Posted: Sat Jan 26, 2019 8:13 pm
by bbunge
Linux distro and version please...
Re: [ZM API] PHP Error
Posted: Sat Jan 26, 2019 8:27 pm
by R2D2
Distro is Gentoo
ZM is 1.32.3
Re: [ZM API] PHP Error
Posted: Sat Jan 26, 2019 11:40 pm
by rockedge
this looks like the CRUD and or the CakePHP components of the API are not the correct versions.
check these links out and see if your fix is in the mix.
viewtopic.php?p=105092#p105092
https://github.com/FriendsOfCake/crud/issues/581
Re: [ZM API] PHP Error
Posted: Sun Jan 27, 2019 8:29 am
by R2D2
After some "Experiments", now i get this issue:
Code: Select all
Warning (2): Use of undefined constant ZM_OPT_USE_API - assumed 'ZM_OPT_USE_API' (this will throw an Error in a future version of PHP) [APP/Controller/AppController.php, line 63]
Warning (2): ini_set() [<a href='http://php.net/function.ini-set'>function.ini-set</a>]: Headers already sent. You cannot change the session module's ini settings at this time [CORE/Cake/Model/Datasource/CakeSession.php, line 581]
CakePHP: the rapid development php framework
Fatal Error
Error: require_once() [<a href='http://php.net/function.require'>function.require</a>]: Failed opening required '../../../includes/config.php' (include_path='.:/usr/share/php7:/usr/share/php')
File: /usr/share/zoneminder/www/api/app/Config/bootstrap.php
Line: 123
Notice: If you want to customize this error message, create app/View/Errors/fatal_error.ctp
CakePHP: the rapid development php framework
CakePHP 2.10.8
Warning (2): Use of undefined constant ZM_DB_USER - assumed 'ZM_DB_USER' (this will throw an Error in a future version of PHP) [CORE/Cake/Model/ConnectionManager.php, line 69]
Warning (2): Use of undefined constant ZM_DB_PASS - assumed 'ZM_DB_PASS' (this will throw an Error in a future version of PHP) [CORE/Cake/Model/ConnectionManager.php, line 69]
Warning (2): Use of undefined constant ZM_DB_NAME - assumed 'ZM_DB_NAME' (this will throw an Error in a future version of PHP) [CORE/Cake/Model/ConnectionManager.php, line 69]
Warning (2): Use of undefined constant ZM_DB_SSL_CA_CERT - assumed 'ZM_DB_SSL_CA_CERT' (this will throw an Error in a future version of PHP) [CORE/Cake/Model/ConnectionManager.php, line 69]
Warning (2): Use of undefined constant ZM_DB_SSL_CLIENT_KEY - assumed 'ZM_DB_SSL_CLIENT_KEY' (this will throw an Error in a future version of PHP) [CORE/Cake/Model/ConnectionManager.php, line 69]
Warning (2): Use of undefined constant ZM_DB_SSL_CLIENT_CERT - assumed 'ZM_DB_SSL_CLIENT_CERT' (this will throw an Error in a future version of PHP) [CORE/Cake/Model/ConnectionManager.php, line 69]
Warning (2): Use of undefined constant ZM_DB_HOST - assumed 'ZM_DB_HOST' (this will throw an Error in a future version of PHP) [APP/Config/database.php, line 92]
Warning (2): Use of undefined constant ZM_DB_HOST - assumed 'ZM_DB_HOST' (this will throw an Error in a future version of PHP) [APP/Config/database.php, line 101]
BTW, i'am using PHP 7.1
Code: Select all
server01 ~ # php -v
PHP 7.1.26 (cli) (built: Jan 19 2019 12:09:17) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.1.26, Copyright (c) 1999-2018, by Zend Technologies
server01 ~ #
Re: [ZM API] PHP Error
Posted: Sun Jan 27, 2019 11:21 am
by R2D2
I edited the "
/usr/share/zoneminder/www/api/app/Config/bootstrap.php" from,
Code: Select all
require_once("../../../includes/config.php");
to
Code: Select all
require_once("/usr/share/zoneminder/www/includes/config.php")
but now i get the following issue:
Code: Select all
Uncaught FatalErrorException: [MissingPluginException] Plugin Crud could not be found.
#0 /usr/share/zoneminder/www/api/lib/Cake/Core/App.php(227): CakePlugin::path('Crud')
#1 /usr/share/zoneminder/www/api/lib/Cake/Core/App.php(549): App::path('Lib', 'Crud')
#2 [internal function]: App::load('CrudControllerT...')
#3 /usr/share/zoneminder/www/api/app/Controller/AppController.php(34): spl_autoload_call('CrudControllerT...')
#4 /usr/share/zoneminder/www/api/lib/Cake/Core/App.php(547): include('/usr/share/zone...')
#5 [internal function]: App::load('AppController')
#6 [internal function]: spl_autoload_call('AppController')
#7 /usr/share/zoneminder/www/api/lib/Cake/Error/ExceptionRenderer.php(155): class_exists('AppController')
#8 /usr/share/zoneminder/www/api/lib/Cake/Error/ExceptionRenderer.php(95): ExceptionRenderer->_getController(Object(ParseError))
#9 /usr/share/zoneminder/www/api/lib/Cake/Error/ErrorHandler.php(126): ExceptionRenderer->__construct(Object(ParseError))
#10 [internal function]: ErrorHandler::h
Re: [ZM API] PHP Error
Posted: Tue Jan 29, 2019 3:48 am
by rockedge
you must identify which version of CakePHP and CRUD you have in your ZM setup.
change what you done back to it's original code. go look in /usr/share/zoneminder/www/api/app/Plugin/Crud/README.md
(or the path to your ZM installation) At the top of this file it should have :
Code: Select all
# Version notice
This version of Crud is for CakePHP 2.x.
This fork has been patched for PHP 7.2 compatibilty, specifically for the [ZoneMinder](https://github.com/ZoneMinder/ZoneMinder) project.
This fork will no longer be necessary once [Pull Reqeust #282](https://github.com/FriendsOfCake/crud/pull/582) has been merged.
if not, you might have the version CRUD and CakePHP that isn't fixed to work with PHP 7.2+
the correct versions are
here at this link and can be swapped in manually with relative ease.
Re: [ZM API] PHP Error
Posted: Tue Jan 29, 2019 6:47 pm
by R2D2
OK, reverted all, an did the instructions from your link above.
But now i get this issue:
Code: Select all
Fatal error: Uncaught FatalErrorException: [CakeSessionException] Unable to configure the session, setting session.use_trans_sid failed.
#0 /usr/share/zoneminder/www/api/lib/Cake/Model/Datasource/CakeSession.php(732): CakeSession::_configureSession()
#1 /usr/share/zoneminder/www/api/lib/Cake/Model/Datasource/CakeSession.php(219): CakeSession::_startSession()
#2 /usr/share/zoneminder/www/api/lib/Cake/Model/Datasource/CakeSession.php(248): CakeSession::start()
#3 /usr/share/zoneminder/www/api/lib/Cake/View/Helper/SessionHelper.php(134): CakeSession::check('Message.flash')
#4 /usr/share/zoneminder/www/api/app/View/Layouts/error.ctp(46): SessionHelper->flash()
#5 /usr/share/zoneminder/www/api/lib/Cake/View/View.php(971): include('/usr/share/zone...')
#6 /usr/share/zoneminder/www/api/lib/Cake/View/View.php(933): View->_evaluate('/usr/share/zone...', Array)
#7 /usr/share/zoneminder/www/api/lib/Cake/View/View.php(546): View->_render('/usr/share/zone...')
#8 /usr/share/zoneminder/www/api/lib/Cake/View/View.php(481): View->renderL in /usr/share/zoneminder/www/api/lib/Cake/Error/ErrorHandler.php on line 138
Re: [ZM API] PHP Error
Posted: Sat Feb 02, 2019 9:45 am
by R2D2
Re: (Solved) [ZM API] PHP Error
Posted: Sat Feb 02, 2019 2:37 pm
by rockedge
yes I was hoping the links I listed had this information...great that you have it going! Good work.
Re: (Solved) [ZM API] PHP Error
Posted: Tue Feb 12, 2019 4:20 pm
by rayrayray
Thank you! I was struggling with the same API error with Ubuntu 18.04.01 LTS and 1.32.3. I didn't need any of the code changes in that forum post -- the code fix and CakePHP plugin files were already present on my system. I only needed these updates to my Apache2 config:
Code: Select all
# For better visibility, the following directives have been migrated from the
# default .htaccess files included with the CakePHP project.
# Parameters not set here are inherited from the parent directive above.
<Directory "/usr/share/zoneminder/www/api">
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
RewriteBase /zm/api
</Directory>
<Directory "/usr/share/zoneminder/www/api/app">
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
RewriteBase /zm/api
</Directory>
<Directory "/usr/share/zoneminder/www/api/app/webroot">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteBase /zm/api
</Directory>