laravel找不到支持的encryption器。 密码和/或密钥长度是无效的
我正在使用Laravelbuild立一个项目。 它在本地主机上工作正常,但是当我上传到服务器(服务器已安装comodo ssl),我收到以下错误:
RuntimeException in EncryptionServiceProvider.php line 29: No supported encrypter found. The cipher and / or key length are invalid in EncryptionServiceProvider.php line 29 at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in Container.php line 733 at Container->build(object(Closure), array()) in Container.php line 626 at Container->make('encrypter', array()) in Application.php line 674 at Application->make('Illuminate\Contracts\Encryption\Encrypter') in Container.php line 837 at Container->resolveClass(object(ReflectionParameter)) in Container.php line 800 at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 771 at Container->build('SahraSalon\Http\Middleware\EncryptCookies', array()) in Container.php line 626 at Container->make('SahraSalon\Http\Middleware\EncryptCookies', array()) in Application.php line 674 at Application->make('SahraSalon\Http\Middleware\EncryptCookies') in Pipeline.php line 123 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Kernel.php line 118 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86 at Kernel->handle(object(Request)) in index.php line 54
谁能帮助解决这个错误?
你有没有在服务器上安装所有必要的扩展?
- PHP> = 5.5.9
- OpenSSL PHP扩展
- PDO PHP扩展
- Mbstring PHP扩展
- Tokenizer PHP扩展
这可能是你错过了OpenSSL扩展。 另外,你有.env
文件中的密钥集?
尝试运行:
php artisan key:generate
答: 'cipher' => ''
没有设置。
您只能input控制台:
php artisan key:generate
如果你的app.php没有改变这个键,手动改变。
接下来,如果你应该碰巧得到这个错误消息:
[ErrorException]
file_get_contents(/path/to/my/project/.env):未能打开stream:没有这样的文件或目录
然后复制.env.example
文件.env.example
试:
cp .env.example .env php artisan key:generate
我有同样的问题之前,我固定它遵循这种方式:去config / app.php,改变"cipher" => "anything"
'cipher' => MCRYPT_RIJNDAEL_128,
我只是修复错误。
-
Shift+Click
鼠标右键,在你的根项目中打开“在这里打开推荐窗口”。 - 在控制台中写入:
"php artisan key:generate"
。 - (像
'key' => env('APP_KEY', 'insert get 32 char key')
//获得32个字符'Mark'到config/app.php
,//第81行
在根目录下,如果有.env.example
文件,则将其改为.env
,然后运行php artisan key:generate
。 这对我有效。
在我的情况下,我需要启用mcrypt扩展。
但首先,检查你是否已经拥有它:
$ sudo apt-get install -y mcrypt php5-mcrypt
检查是否加载了mcrypt模块:
$ php -m | grep mcrypt
如果没有显示,是因为没有加载,但你已经安装在右上方? 所以这样做:
$ php5enmod mcrypt $ sudo service apache2 restart
再次检查,你应该看到mcrypt而不是什么。 这是一个好的迹象,重新加载你的应用程序,并去解决你的下一个错误;)
$ php -m | grep mcrypt mcrypt
写在控制台php artisan key:generate
你会得到如下消息: Application key [get 32 char key] set successfully.
'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81
解决:
PHP的工匠密钥:生成
我设法解决部署到Ubuntu服务器,这里是所有的步骤
确保PHP> = 5.5.9
确保安装了OpenSSL,Mbstring,Tokenizer和mcrypt。
在PHP(Ubuntu)中安装mcrypt:
sudo apt-get install php5-mcrypt, sudo php5enmod mcrypt
使存储文件夹可写:
chmod -R 0777 storage
让Apache使用Lavarel /公共文件夹作为家:
DocumentRoot /home/code2/public_html/Laravel-Project/public <Directory "/home/code2/public_html/Laravel-Project/public”> AllowOverride all </Directory>
主要是我的FTP是默认情况下不能复制隐藏的文件: .env
和/public/.htaccess
需要在那里!
完成上述任务后,它在Ubuntu服务器上工作
我通过运行这个来修复它:
php artisan config:cache
在我发现密钥被caching在bootstrap \ cache \ config.php之前,我已经忍受了这个问题几个小时。 删除文件,我的网站加载好(即有没有问题,我的configuration)。
我发现通过添加一些debugging输出到boostrap \ cache \ compiled.php,使其吐出密码和密钥(在7010行左右的某处)。 然后挖掘,看看它是如何拿起configuration,并发现它使用cachingconfiguration文件。
添加"illuminate/html": "~5.0"
来要求你的composer.json
文件的一部分。 像这样:
... "require": { ... "illuminate/html": "~5.0" ... }, ...
然后运行composer install
命令。 composer install
完成后。 运行php artisan key:generate
。 你会得到这样的消息:
Application key [get 32 char key] set successfully.
请确保你的机器有这个要求 。
- PHP> = 5.6.4
- OpenSSL PHP扩展
- PDO PHP扩展
- Mbstring PHP扩展
- Tokenizer PHP扩展
- XML PHP扩展
然后安装或更新您的项目后
composer php更新
之后你有 –
.env.example
复制并重命名为 –
.ENV
并根据您的数据库configuration或您需要的任何其他修改进行更改。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your db name DB_USERNAME=username if any otherwise root DB_PASSWORD= your password if not set leave blank
最后通过 –
PHP的工匠密钥:生成
对于某人来说可能只是最后一步就够了。 但是我每次克隆任何laravel项目时都会遇到这个问题。 这整个步骤使任何危险。