Zend framework - error wont login

2019-08-19 16:06发布

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 its working but when i migrated to new server its failing.

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: remove the NEW

$ echo '' > composer.lock

Step 2: INSERT the 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 vendor

$ rm -fr vendor

Step 4: try to install and fails

$ ./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: Uncaught Error: Call to undefined function Application\Controller\mysql_real_escape_string()

1条回答
别忘想泡老子
2楼-- · 2019-08-19 16:11

It looks that what really matters on new server is your vendor/ folder content. It seems that once you deploy your software you installed dependencies with composer update instead of composer install or you do not have composer.lock file preserved.

The quick fix should be to simply copy composer.lock file from old machine, wipe vendor/ folder on new one and reinstall doing composer install which should be then based on composer.lock content.

EDIT

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

Seems your OLD setup is really old. What you can do is update your composer.json to request exactly the same versions you have on old system. This is pretty simple, and all you need to do is see what you got on OLD system and make new request the same.

So list installed versions with composer show:

$ composer show

foo/bar            1.4.3  Some description
....

Then edit composer.json on new system and update all version constraint to point to exactly the same version. I.e. instead of

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

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

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

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

查看更多
登录 后发表回答