Zend framework - error not logging in

CentOS 3.10.0-327.36.3.el7.x86_64, PHP 7.0.12 .

  public function render($html, $input) { $view = new ViewModel($input); $view->setTemplate($html); $viewRenderer = $this->getServiceLocator()->get('ViewRenderer'); return $viewRenderer->render($view); } 

In OLD PHP and OLD CentOS works, but when I switched to a new server, it did not work.

 PHP Deprecated: You are retrieving the service locator from within the class Application\\Controller\\MainController. Please be aware that ServiceLocatorAwareInterface is deprecated and will be removed in version 3.0, along with the ServiceLocatorAwareInitializer. You will need to update your class to accept all dependencies at creation, either via constructor arguments or setters, and use a factory to perform the injections. in /home/www/html/xxmanager/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php on line 258, referer: https://xx.xx.com/ 244 /** 245 * Retrieve serviceManager instance 246 * 247 * @return ServiceLocatorInterface 248 */ 249 public function getServiceLocator() 250 { 251 trigger_error(sprintf( 252 'You are retrieving the service locator from within the class %s. Please be aware that ' 253 . 'ServiceLocatorAwareInterface is deprecated and will be removed in version 3.0, along ' 254 . 'with the ServiceLocatorAwareInitializer. You will need to update your class to accept ' 255 . 'all dependencies at creation, either via constructor arguments or setters, and use ' 256 . 'a factory to perform the injections.', 257 get_class($this) 258 ), E_USER_DEPRECATED); 259 260 return $this->serviceLocator; 261 } 

EDIT:

Step 1: uninstall NEW

 $ echo '' > composer.lock 

Step 2: INSERT OLD to composer.lock

 { "hash": "3d8fc311b085e1e9bc4ed181947f205d", "packages": [ { "package": "zendframework/zendframework", "version": "2.0.3" } ], "packages-dev": null, "aliases": [ ], "minimum-stability": "stable", "stability-flags": [ ] } 

Step 3: Remove the NEW Provider

 $ rm -fr vendor 

Step 4: try to install and not execute

 $ ./composer.phar install [RuntimeException] Your composer.lock was created before 2012-09-15, and is not supported anymore. Run "composer update" to generate a new one. install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--] [<packages>]... 

EDIT 2:

 # cat composer.json { "name": "zendframework/skeleton-application", "description": "Skeleton Application for ZF2", "license": "BSD-3-Clause", "keywords": [ "framework", "zf2" ], "homepage": "http://framework.zend.com/", "require": { "php": ">=5.3.3", "zendframework/zendframework": "2.2.10" } } # php composer.phar install Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 2 installs, 0 updates, 0 removals - Installing zendframework/zendxml (1.0.2): Loading from cache - Installing zendframework/zendframework (2.2.10): Downloading (100%) zendframework/zendframework suggests installing doctrine/annotations (Doctrine Annotations >=1.0 for annotation features) zendframework/zendframework suggests installing ext-intl (ext/intl for i18n features (included in default builds of PHP)) zendframework/zendframework suggests installing ircmaxell/random-lib (Fallback random byte generator for Zend\Math\Rand if OpenSSL/Mcrypt extensions are unavailable) zendframework/zendframework suggests installing ocramius/proxy-manager (ProxyManager to handle lazy initialization of services) zendframework/zendframework suggests installing zendframework/zendpdf (ZendPdf for creating PDF representations of barcodes) zendframework/zendframework suggests installing zendframework/zendservice-recaptcha (ZendService\ReCaptcha for rendering ReCaptchas in Zend\Captcha and/or Zend\Form) Writing lock file Generating autoload files 

FAIL: ERROR: PHP Fatal error: Missed error: call to undefined function Application \ Controller \ mysql_real_escape_string ()

0
php zend-framework2 centos
source share
1 answer

It looks like the vendor/ content is really important on the server. It seems that after deploying your software, you installed dependencies with composer update instead of composer install or you did not have the composer.lock file left.

A quick fix would be to simply copy the composer.lock file from the old machine, erase the vendor/ folder to a new one, and reinstall the composer install run, which should then be based on the composer.lock content.

EDIT

Your composer.lock was created before 2012-09-15

It seems that your OLD installation is really old. What you can do is update your composer.json to request exactly the same versions as the old system. This is pretty simple, and all you have to do is look at what you got in the OLD system and make the new request the same.

So, a list of installed versions with composer show :

 $ composer show foo/bar 1.4.3 Some description .... 

Then edit composer.json on the new system and update all version restrictions to point to the same version. That is, instead of

 'require': { 'foo/bar': '~1.0', ... } 

you need to put the version shown by composer show for this foo/bar :

 'require': { 'foo/bar': '1.4.3', ... } 

Then remove composer.lock and vendor/ and make composer install , and you should be good.

+1
source share

All Articles