vendredi 4 juin 2021

RuntimeException in EncryptionServiceProvider.php Issue after going from Laravel 5.1 to 5.2

I have already done $php artisan key:generate and $php artisan config:cache. The key does generate in my .env file when doing the artisan generate command which is good.

I noticed this started after I updated from Laravel 5.1 to Laravel 5.2 and changed "bindshared" to "singleton" on my EncryptionServiceProvider.php which I was prompted to do when updating from 5.1 to 5.2.

I have been stumped on this for weeks now and can't seem to find anything helpful online. Thanks in advance!

Here is the error I am getting:

RuntimeException in EncryptionServiceProvider.php line 45:
No supported encrypter found. The cipher and / or key length are invalid.
in EncryptionServiceProvider.php line 45
at EncryptionServiceProvider->getEncrypterForKeyAndCipher(null, null) in EncryptionServiceProvider.php line 25
at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in Container.php line 731
at Container->build(object(Closure), array()) in Container.php line 629
at Container->make('encrypter', array()) in Application.php line 697
at Application->make('encrypter') in Container.php line 849
at Container->resolveClass(object(ReflectionParameter)) in Container.php line 804
at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 774
at Container->build('Illuminate\Cookie\Middleware\EncryptCookies', array()) in Container.php line 629
at Container->make('Illuminate\Cookie\Middleware\EncryptCookies', array()) in Application.php line 697
at Application->make('Illuminate\Cookie\Middleware\EncryptCookies') in Pipeline.php line 126
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
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 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 52

Here is my app.php:

<?php

return [

    'sign_image_dir' => 'img/signs/',

    /*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    'debug' => env('APP_DEBUG'),

    /*
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | your application so that it is used when running Artisan tasks.
    |
    */

    'url' => '/',

    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. We have gone
    | ahead and set this to a sensible default for you out of the box.
    |
    */

    'timezone' => 'America/New_York',

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Application Fallback Locale
    |--------------------------------------------------------------------------
    |
    | The fallback locale determines the locale to use when the current one
    | is not available. You may change the value to correspond to any of
    | the language folders that are provided through your application.
    |
    */

    'fallback_locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is used by the Illuminate encrypter service and should be set
    | to a random, 32 character string, otherwise these encrypted strings
    | will not be safe. Please do this before deploying an application!
    |
    */

    'key' => env('APP_KEY'),

    'cipher' => env('AES-256-CBC'),

    /*
    |--------------------------------------------------------------------------
    | Logging Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure the log settings for your application. Out of
    | the box, Laravel uses the Monolog PHP logging library. This gives
    | you a variety of powerful log handlers / formatters to utilize.
    |
    | Available Settings: "single", "daily", "syslog", "errorlog"
    |
    */

    'log' => 'daily',


    /*
    |--------------------------------------------------------------------------
    | Environment Value for Laravel 5.2 Update
    |--------------------------------------------------------------------------
    */
    'env' => env('APP_ENV', 'production'),
    /*
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on the
    | request to your application. Feel free to add your own services to
    | this array to grant expanded functionality to your applications.
    |
    */

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        'Collective\Html\HtmlServiceProvider',
        'Illuminate\Auth\AuthServiceProvider',
        'Illuminate\Cache\CacheServiceProvider',
        'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
        'Illuminate\Cookie\CookieServiceProvider',
        'Illuminate\Database\DatabaseServiceProvider',
        'Illuminate\Encryption\EncryptionServiceProvider',
        'Illuminate\Filesystem\FilesystemServiceProvider',
        'Illuminate\Foundation\Providers\FoundationServiceProvider',
        'Illuminate\Hashing\HashServiceProvider',
        'Illuminate\Mail\MailServiceProvider',
        'Illuminate\Pagination\PaginationServiceProvider',
        'Illuminate\Pipeline\PipelineServiceProvider',
        'Illuminate\Queue\QueueServiceProvider',
        'Illuminate\Redis\RedisServiceProvider',
        'Illuminate\Auth\Passwords\PasswordResetServiceProvider',
        'Illuminate\Session\SessionServiceProvider',
        'Illuminate\Translation\TranslationServiceProvider',
        'Illuminate\Validation\ValidationServiceProvider',
        'Illuminate\View\ViewServiceProvider',
        'Barryvdh\DomPDF\ServiceProvider',
        'Barryvdh\Debugbar\ServiceProvider',
        'Intervention\Image\ImageServiceProvider',
        'UxWeb\SweetAlert\SweetAlertServiceProvider',
        'Illuminate\Broadcasting\BroadcastServiceProvider',
        Collective\Bus\BusServiceProvider::class,

        /*
         * Application Service Providers...
         */
        'App\Providers\AppServiceProvider',
        'App\Providers\BusServiceProvider',
        'App\Providers\ConfigServiceProvider',
        'App\Providers\EventServiceProvider',
        'App\Providers\RouteServiceProvider',
        'Laracasts\Flash\FlashServiceProvider',

    ],

    /*
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    */

    'aliases' => [

        'App'       => 'Illuminate\Support\Facades\App',
        'Artisan'   => 'Illuminate\Support\Facades\Artisan',
        'Auth'      => 'Illuminate\Support\Facades\Auth',
        'Blade'     => 'Illuminate\Support\Facades\Blade',
        'Bus'       => 'Illuminate\Support\Facades\Bus',
        'Cache'     => 'Illuminate\Support\Facades\Cache',
        'Config'    => 'Illuminate\Support\Facades\Config',
        'Cookie'    => 'Illuminate\Support\Facades\Cookie',
        'Crypt'     => 'Illuminate\Support\Facades\Crypt',
        'DB'        => 'Illuminate\Support\Facades\DB',
        'Eloquent'  => 'Illuminate\Database\Eloquent\Model',
        'Event'     => 'Illuminate\Support\Facades\Event',
        'File'      => 'Illuminate\Support\Facades\File',
        'Hash'      => 'Illuminate\Support\Facades\Hash',
        'Input'     => 'Illuminate\Support\Facades\Input',
        'Inspiring' => 'Illuminate\Foundation\Inspiring',
        'Lang'      => 'Illuminate\Support\Facades\Lang',
        'Log'       => 'Illuminate\Support\Facades\Log',
        'Mail'      => 'Illuminate\Support\Facades\Mail',
        'Password'  => 'Illuminate\Support\Facades\Password',
        'Queue'     => 'Illuminate\Support\Facades\Queue',
        'Redirect'  => 'Illuminate\Support\Facades\Redirect',
        'Redis'     => 'Illuminate\Support\Facades\Redis',
        'Request'   => 'Illuminate\Support\Facades\Request',
        'Response'  => 'Illuminate\Support\Facades\Response',
        'Route'     => 'Illuminate\Support\Facades\Route',
        'Schema'    => 'Illuminate\Support\Facades\Schema',
        'Session'   => 'Illuminate\Support\Facades\Session',
        'Storage'   => 'Illuminate\Support\Facades\Storage',
        'URL'       => 'Illuminate\Support\Facades\URL',
        'Validator' => 'Illuminate\Support\Facades\Validator',
        'View'      => 'Illuminate\Support\Facades\View',
        'Flash'     => 'Laracasts\Flash\Flash',
        'PDF'       => 'Barryvdh\DomPDF\Facade',
        'Image'     => 'Intervention\Image\Facades\Image',
        'Alert'     => 'UxWeb\SweetAlert\SweetAlert',
        'Form'      => 'Collective\Html\FormFacade',
        'Html'      => 'Collective\Html\HtmlFacade',
        'Gate' => Illuminate\Support\Facades\Gate::class,
    ],

];

Here is the EncryptionServiceProvider.php file:

<?php

namespace Illuminate\Encryption;

use RuntimeException;
use Illuminate\Support\Str;
use Illuminate\Support\ServiceProvider;

class EncryptionServiceProvider extends ServiceProvider
{
    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('encrypter', function ($app) {
            $config = $app->make('config')->get('app');

            if (Str::startsWith($key = $config['key'], 'base64:')) {
                $key = base64_decode(substr($key, 7));
            }

            return $this->getEncrypterForKeyAndCipher($key, $config['cipher']);
        });
    }

    /**
     * Get the proper encrypter instance for the given key and cipher.
     *
     * @param  string  $key
     * @param  string  $cipher
     * @return mixed
     *
     * @throws \RuntimeException
     */
    protected function getEncrypterForKeyAndCipher($key, $cipher)
    {
        if (Encrypter::supported($key, $cipher)) {
            return new Encrypter($key, $cipher);
        } elseif (McryptEncrypter::supported($key, $cipher)) {
            return new McryptEncrypter($key, $cipher);
        } else {
            throw new RuntimeException('No supported encrypter found. The cipher and / or key length are invalid.');
        }
    }
}


via Chebli Mohamed

How to make Mockery overload option work properly on Laravel 5

I'm trying to use overload option of Mockery library on Laravel 5.

I write this test case:

<?php

namespace Tests\Unit;

use Mockery;
use Tests\TestCase;

/**
 * @runTestsInSeparateProcesses
 * @preserveGlobalState disabled
 */
class RenewSignatureTest extends TestCase
{
    public function testHandle()
    {
        /** @var mixed $mock */
        $mock = Mockery::mock('overload:App\FooClass');
        $mock->shouldReceive('callBar')->times(2);
    }
}

According to documentation, this test should fail, but, does not matter what I do, the test never fails! It always result in:

Time: 304 ms, Memory: 19.53 MB

OK (1 test, 1 assertion)

If I remove the 'overload:' option (code bellow), the test fails. So I assume that I'm not using library methods on the wrong way.

<?php

namespace Tests\Unit;

use Mockery;
use Tests\TestCase;

/**
 * @runTestsInSeparateProcesses
 * @preserveGlobalState disabled
 */
class RenewSignatureTest extends TestCase
{
    public function testHandle()
    {
        /** @var mixed $mock */
        $mock = Mockery::mock('overload:App\FooClass');
        $mock->shouldReceive('callBar')->times(2);
    }
}

Am I doing anything wrong? Does anyone know how to use this option properly?

My current environment:

  • Laravel 5
  • Mockery 1.0
  • PHPUnit 7.5


via Chebli Mohamed

jeudi 3 juin 2021

print days of a special month ? laravel

I need to print only the records for the month of May

I get them with the variable

<td></td>

I need to see only May results, how do I do it?



via Chebli Mohamed

Capture Errors in case of paypal payment failed using PayPal buttons

I' using Paypal buttons and payment system is working but i want to capture errors if occur between the payment and save it in database, i'm using laravel framework.

<script>
    paypal.Buttons({
        createSubscription: function(data, actions) {
            return actions.subscription.create({
                'plan_id': "planid"
            });
        },
        onApprove: function(data, actions) {
           window.location.href = "/subscription/";
        },
        onCancel: function(data) {
           window.location.href = "/subscription/cancel"
        },
        onError: function(err) {
           window.location.href = "/subscription/error?error=" + err;
        } 


via Chebli Mohamed

mercredi 2 juin 2021

Convert HTML to Image In PHP Only [closed]

I have simple html file which which contain the div and inside div I have some images and test with css setting. I want to convert this html into image and save image to specific path. Suggest any usefully PHP laravel library or SDK which purely work on PHP do not required any other extension or dependency like nodejs or puppeteer.



via Chebli Mohamed

How to apply filter conditions gradually without breaking the previous filtering conditions

Maybe this question seems stupid but I need to learn how it is possible to fix it. In Laravel, I try to apply many conditions according to users choices, like this:

$query = Model::query();
if ($request->has('ids')) {
    $query = $query->whereIn('id', $request->get('ids'));
}
if ( ($request->has('fruits')) ) {
    $query = $query->whereHas('fruits', function ($sQuery) use ($list) {
       $sQuery->whereIn('fruit.id', $list);
    });
}
if ($request->has('date')) {
   $query = $query->whereDate('created_at', '>=', $request->get('date'))
              ->orWhereDate('updated_at', '>=', $request->get('date'));
}

The fact is the conditions about dates break previous filter conditions. I am getting other raws which do not match to first conditions. I guess it is because orWhereDate which is applied as condition "or" about all others. How to deal with this?



via Chebli Mohamed

how to get value from Marquee to show in lable using JS/JQ/

    <marquee id="marquee_element" class="marquee_element">
        <span class="notification_marquee first "></span>
        <span class="notification_marquee second not_sec"></span>
        <span class="notification_marquee third not_3rd"></span>
        <span class="notification_marquee fourth not_4th"></span>
        <span class="notification_marquee fifth not_5th"></span>
     </marquee>

i want to print marquee value which in on sceen i have to also print on lable

  <span id="an_label_1" class="an_label not_fst"></span>
      


via Chebli Mohamed