J'ai un problème pour que SoapClient de PHP fonctionne dans mon travail Laravel. J'ai créé un travail en file d'attente où j'importe le SoapClient avec use SoapClient
mais Laravel n'est pas capable de le trouver.
Mais lorsque j'utilise SoapClient dans mes contrôleurs, cela fonctionne parfaitement.
J'ai vérifié phpini (): SoapClient est définitivement activé.
Des idées?
Mon code de travail:
<?php
namespace AppJobs;
use SoapClient;
use TymonJWTAuthExceptionsJWTException;
use JWTAuth;
use IlluminateBusQueueable;
use IlluminateQueueSerializesModels;
use IlluminateQueueInteractsWithQueue;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
class ProcessQueuedRenderRequests implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct()
{
}
public function handle()
{
$soap = new SoapClient("http://mywsdl");
...
Errorlog:
[[2017-11-22 18:17:50] local.ERROR: SymfonyComponentDebugExceptionFatalThrowableError: Class "SoapClient" not found in /var/www/app/Jobs/ProcessQueuedRenderRequests.php:44
J'utilise Docker avec la configuration Laradock. Le joblistener ist a commencé de cette façon:
docker-compose exec workspace bash
php artisan queue:listen
Réponses:
0 pour la réponse № 1utilisation
$soap = new SoapClient("http://mywsdl");
J'ai eu le même problème une fois.
0 pour la réponse № 2
Trouvé le problème. Le savon n'était pas installé dans le conteneur d'espace de travail.
Quand je commence le joblistener comme ça ça marche:
docker-compose exec php-fpm bash
php artisan queue:listen
Encore un peu étrange puisque devrait également être installé dans le conteneur d'espace de travail en fonction de mon fichier .env.