Sous Docker Desktop pour Windows, mkdir() appelle file_exists(), et ce dernier renvoie "true" si le dossier a existé.
 sudo pecl install memcached
Si cela persiste :
 sudo apt-get install php-igbinary
 sudo apt-get install php-msgpack
 sudo service php7.2-fpm reload
 sudo pecl install redis
Erreurs SMTP.
"La connexion a échoué".
Vérifier le serveur HTTP qui interprète le .php.
"SMTP Error: Could not connect to SMTP host".
Changer de SMTP, ex : http://www.commentcamarche.net/faq/893-parametres-de-serveurs-pop-imap-et-smtp-des-principaux-fai
Composer.
1 package has known vulnerabilities.
Exemple avec un codice_24 absent du composer.json :
 composer depends guzzlehttp/guzzle
puis codice_25 du résultat.
Si cela ne suffit pas, installer Guzzle puis le désinstaller pour mettre à jour sa dépendance indirecte :
 composer require guzzlehttp/guzzle && composer remove guzzlehttp/guzzle
"./composer.json" does not contain valid JSON.
Lors d'un "composer install", si ce message survient à tort, c'est qu'un autre fichier .json du projet contient le problème.
Si cela persiste malgré la correction, il se peut qu'il faille redémarrer Docker Desktop sur Windows.
Conclusion: don't install xxx.
Lors d'un "composer require", spécifier une version inférieure du paquet requis.
No driver found to handle VCS repository.
VCS fonctionne en protocole git, vérifier que l'URL est bien au format "git@repo:bundle.git".
Sinon il y a deux alternatives :
no matching package found.
Ajouter le paramètre suivant :
 composer require mon_paquet --update-with-all-dependencies
Permission denied (public key).
Si le dépôt privé se clone bien sans passer par "composer" :
You must be using the interactive console to authenticate.
Pour installer cette bibliothèque, il faut que Composer puisse se loguer. Pour ce faire, il utilise auth.json qui peut se trouver dans :
Exemple de auth.json :
 "github-oauth": {
 "github.com": "<snip>"
 "http-basic": {
 "repo.magento.com": {
 "username": "<snip>",
 "password": "<snip>"
Your Composer dependencies require a PHP version ">= 8.0.0"..
Ajouter au paragraphe "config" :
"platform-check": false
Puis relancer codice_28 pour que cela soit pris en compte.
Your requirements could not be resolved to an installable set of packages.
Si deux dépendances s'empêchent mutuellement de se mettre à jour, les demander dans la même commande :
 composer require mon-bundle ^1.0 symfony/http-client 5.3.* -W
Timeout sur composer install.
Désactiver Xdebug et relancer.
PHPUnit.
Les tests ne se lancent pas.
Si phpunit.xml.dist utiliser un bootstrap.php, y ajouter codice_29.
Sinon, si un var_dump() fonctionne dans le setUp() du test unitaire mais pas dans ses méthodes de test, c'est peut-être une exception qui se lance dans un trait ou dans le vendor PHPUnit. Pour la trouver, lancer l'application et regarder les logs (par exemple depuis un contrôleur).
Sinon, si ça fonctionne en commentant le "extends", tester la classe mère pour y trouver l'exception.
Sinon, dans Symfony, codice_30.
Sinon, lancer Xdebug pour comprendre.
et echo() ou var_dump() dans les tests n'affiche rien.
Lancer le test en mode le plus verbeux :
Les tests fonctionnels renvoient toujours 404.
Sur Symfony, codice_31 appelle directement l'API sans serveur HTTP. Si on utilise phpunit dans symfony/phpunit-bridge, il va chercher sur example.com.
Sinon il manque peut-être un trailing slash dans la route appelée.
Les tests se lancent mais s'arrêtent sans explication, en renvoyant "killed".
Un var_dump() sature la mémoire.
Did you forget a "use" statement for MaClasse "ou" Class 'MaClasse' not found.
Si des classes existent mais que PHPUnit n'arrive pas à les charger :
The .git directory is missing from....
Supprimer vendor/ et relancer composer.
THE ERROR HANDLER HAS CHANGED!
Plusieurs solutions possibles :
Trying to configure method "get" which cannot be configured because it does not exist, has not been specified, is final, or is static.
Un mock ne récupère aucune méthode de sa classe car elle n'a pas pu être instanciée.
 $this->serializerMock = $this
 ->getMockBuilder(SerializerInterface::class)
 ->setMethods(['serialize', 'deserialize', 'decode'])
 ->getMock()
 $this->serializerMock
 ->method('decode')
 ->willReturn(")
Trying to @cover or @use not existing method.
Si la méthode existe bien, c'est que la classe testée n'a pas été définie en annotation (avec son namespace) :
 * @coversDefaultClass App\Service\MyService
class MyServiceTest extends TestCase
 ...
TypeError: Argument 1 passed to PHPUnit\Framework\TestCase::registerMockObjectsFromTestArguments() must be of the type array, null given.
Si cela survient dans tous les tests qui invoquent un trait, retirer le constructeur de ce trait.
Warning No tests found in class "Xxx"..
Si les méthodes de tests contiennent des assertions invisibles de PHPUnit, leur ajouter codice_35 pour afficher pourquoi ils ne se lancent pas. Par exemple, il peut s'agir d'un mock qui demande un constructeur.
Si c'est normal de ne pas lancer de test dans une classe mère, la rendre abstraite ou statique.
Symfony.
En cas d'erreur, un composant de débogage appelé "Profiler", est accessible en bas à gauche de la page d'erreur, avec des logs et mesures de performances. Installation :
composer require --dev symfony/profiler-pack
On peut par exemple accéder au phpinfo() via l'URL .../_profiler/phpinfo.
Une route de contrôleur fonctionne dans un client HTTP mais pas dans un autre.
Si $request est vide avec certains clients HTTP :
Une route de contrôleur fonctionne dans un client HTTP mais pas en PhpUnit, ex : No matching accepted Response format could be determined (406 Not Acceptable).
composer remove friendsofsymfony/rest-bundle
Attempted to load class "WebProfilerBundle" from namespace "Symfony\Bundle\WebProfilerBundle".
Si cela fonctionne avec "composer install" mais pas avec " composer install --no-dev", il faut définir codice_36 dans le .env.
Attribute "autowire" on service "xxx" cannot be inherited from "_defaults" when a "parent" is set. Move your child definitions to a separate file or define this attribute explicitly..
Lors d'utilisation de service abstrait, on ne peut pas utiliser l'autowiring. On peut alors .
Cannot autowire service... alors qu'il existe.
Peut se produire :
class MyListener
 public function __construct(
 private readonly Security $security, // exemple
 private readonly ControllerResolverInterface $controllerResolver
L'erreur est :
Cannot autowire service "App\EventListener\MyListener": argument "$controllerResolver" of method "__construct()" references interface "Symfony\Component\HttpKernel\Controller\ControllerResolverInterface" but no such service exists. You should maybe alias this interface to one of these existing services: "debug.controller_resolver", "debug.controller_resolver.inner".
La solution est d'écrire :
class MyListener
 public function __construct(
 private readonly Security $security, // exemple
 #[Autowire(service: 'controller_resolver')] private readonly ControllerResolverInterface $controllerResolver
Cannot load resource "../../src/Controller/". Make sure to use PHP 8+ or that annotations are installed and enabled..
 composer require sensio/framework-extra-bundle
Circular reference detected.
L'autoloader se heurte à un argument du constructeur d'une classe : il faut le sortir de la méthode codice_39 pour le définir dans une méthode portant son nom. Exemple de déclaration en YAML :
 app.ma_classe:
 class: App\MaClasse
 arguments:
 - '@service.sans.probleme'
 calls:
 - method: setServiceAvecProbleme
 arguments:
 - '@service.avec.probleme'
 tags:
A circular reference has been detected when serializing the object.
Idem en codice_40 dans l'entité.
Pour résoudre cela sans changer de relation entre les entités, il y a plusieurs solutions :
curl error 6 while downloading https://flex.symfony.com/versions.json: Could not resolve host: flex.symfony.com.
composer update symfony/flex --no-plugins --no-scripts
CURLPIPE_HTTP1 is no longer supported.
Si cela se produit sur un projet Symfony avec composer, il faut juste :
composer global require symfony/flex ^1.5
rm -Rf vendor/symfony/flex
Environment variables "xxx" are never used. Please, check your container's configuration..
Pazsser par des variables intermédiaires dans services.yaml :
yyy: '%env(xxx)%'
Error 400 Bad Request "Your browser sent a request that this server could not understand.".
Les règles de réécriture d'URL Apache sont erronées (voir ci-dessous).
Error 404 Not Found "The requested URL /xxx was not found on this server.".
Si la page d'accueil fonctionne mais pas les sous-pages (alors qu'un nom de domaine est déjà dédié au site dans le vhost), les règles de réécriture d'URL de la configuration Apache sont manquantes ou erronées. Il faut donc créer codice_45 :
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Invalid header: CR/LF/NUL found.
Un JSON envoyé en POST dans symfony/http-client contient des retours chariots inattendus : les retirer. Ex : 
$json = preg_replace("(\r?\n)", ", $json);
manifest.json does not exist.
 yarn install && yarn add --dev @symfony/webpack-encore && yarn build
Maximum function nesting level of '6000' reached.
Si cela se produit par exemple en vidant le cache, c'est que deux services se renvoient la balle (même indirectement) depuis leurs constructeurs.
NetworkError when attempting to fetch resource (Firefox) / Failed to fetch (Chrome).
Dans l'API avec Swagger UI : violation du CQRS empêchant l'affichage du résultat de l'API dans /api/doc, à causes des domaines. Sur un domaine local, cela peut être résolu en changeant l'URL avant /api/doc pour qu'elle soit valide (ex : passer de wikibooks/api/doc à wikibooks.org/api/doc).
Sinon réessayer en HTTP au lieu de HTTPS.
Sinon c'est la clé renseignée (du .env) qui est différente de celle en BDD.
Si le serveur Web est Nginx, retirer du vhost "add_header Access-Control-Allow-Origin *;" et "limit_exept".
request->request et request->query sont vides à tort.
Utiliser $request->getContent() ou $request->toArray() à la place.
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known.
Un service inexistant ou avec des paramètres en erreur est appelé. Cela peut être provoqué par une variable d'environnement d'URL manquante ou erronée (ex : retirer le protocole, ou ajouter la version du SGBD).
SSL certificate problem: unable to get local issuer certificate.
Utiliser l'installation avec "Composer.phar" plutôt que "Symfony.phar".
InvalidArgumentException Invalid env(bool:xxx) name: only "word" characters are allowed.
Soit retirer la résolution "bool:" sur la variable d'environnement concernée, soit la renommer si elle contient des symboles autres que des lettres, des nombres ou underscore (ex : "=", "%", ":", etc.).
The autoloader expected class "App\MaClasse" to be defined in file "/var/www/.../MaClasse.php". The file was found but the class was not in it, the class name or namespace probably has a typo..
Revérifier que :
Uncaught ReflectionException.
Si c'est lors du passage de PHP 7 à 8, essayer de lancer le script sans Symfony pour avoir le détail (ex : utiliser PhpUnit directement au lieu de PhpUnit bridge). Cela peut par exemple provenir de return type différents entre une interface (ex : ArrayAccess) et son implémentation.
You have requested a non-existent parameter "kernel.secret". Did you mean this: "kernel.charset"?
À l'installation d'une dépendance, si les champs sont renseignés dans config/packages, alors c'est qu'ils ne sont pas chargé dans le bundle par Kernel.php.
Peut se traduire aussi par des erreurs de chargement de bundle du type : "The child config "x" under "y" must be configured."
"The controller for URI \"/api/ma_route/123\" is not callable: Controller \"MonController\" does neither exist a service nor as class.".
Si codice_47 montre le service et codice_48 la route, renseigner routes.yaml et vider le cache. Ex :
index:
 methods: DELETE
 controller: App\Controller\MonController::__invoke
Si ça ne fonctionne pas, passer par un évènement sur la méthode générique.
Doctrine.
Le champ sauvegardé en base est toujours 0.
Se produit quand on utilise l'annotation codice_49 sur un champ qui n'est pas "AUTOINCREMENT" en base de données.
Binding an entity with a composite primary key to a query is not supported.
Se produit quand on utilise la méthode magique find() d'un repository sur une entité qui a une clé composite (au moins deux attributs avec codice_50). Il faut alors utiliser codice_51.
Call to undefined function Closure at EventDispatcher.php:299.
Ajouter dans composer.json :
 "conflict": {
 "symfony/symfony": "*",
 "doctrine/common": ">=3.0",
 "doctrine/persistence": "<1.3"
Puis lancer "composer update".
Cannot autowire service "App\Components\CRM\Repository\MonRepository": argument "$class" of method "Doctrine\ORM\EntityRepository::__construct()" references class "Doctrine\ORM\Mapping\ClassMetadata" but no such service exists..
Se produit avec l'autowiring, quand on ajoute l'annotation vers un repo dans une entité. Ex :
 @ORM\Entity(repositoryClass="App\MonRepository")
En fait depuis Doctrine 1.8, le repository doit étendre "ServiceEntityRepository" au lieu de "EntityRepository", et avoir un constructeur. Par exemple :
use App\Entity\MonEntite;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\ManagerRegistry; // anciennement Doctrine\Persistence\ManagerRegistry;
class MonEntiteRepository extends ServiceEntityRepository
 public function __construct(ManagerRegistry $registry)
 parent::__construct($registry, MonEntite::class);
Class "App\Entity\X" seems not to be a managed Doctrine entity. Did you forget to map it?
On fait appel à une classe PHP comme si c'était une entité Doctrine : il faut simplement ajouter les annotations Doctrine à la classe, ou bien recréer la table à partir du code PHP.
Column not found: 1054 Unknown column 't0.xxx_id' in 'field list'.
Il faut juse ajouter la colonne de jointure sous l'annotation *To*. Ex :
codice_52
Could not find the entity manager for class '...'.
Dans doctrine.yaml, retirer codice_53.
Entity of type 'App\\MonEntite' for IDs id(1) was not found.
S'il s'agit de l'ID d'une entité jointe, le rendre nullable (codice_54).
Entity of type App\\MonEntite is missing an assigned ID for field 'id'..
Une entité n'arrive pas à être sauvegardée avec un ID null (non auto-incrémenté). Il faut donc le générer (par exemple avec un codice_55).
Sinon vérifier que l'erreur ne vient pas d'un listener en sur codice_56 qui tente de persister l'entité récupérée via codice_57.
Doctrine\ORM\ORMInvalidArgumentException: A new entity was found through the relationship 'X' that was not configured to cascade persist operations for entity: X. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).
Un service a un tag et un argument constructeur incompatible. Ce service en argument fait un $em->clear() au lieu de clear(object), ou persist(object) au lieu de merge(object).
Invalid PathExpression. Must be a StateFieldPathExpression.
Cela peut arriver quand on ajoute une clé étrangère dans un select sans sa jointure :
 $this->createQueryBuilder('user')
 ->select(['user.id', 'user.company'])
On peut donc le remplacer par :
 $this->createQueryBuilder('user')
 ->select('user.id')
 ->leftJoin('user.company', 'u')
Par contre, si on ne veut pas la jointure, utiliser "identity" :
 $this->createQueryBuilder('user')
 ->select(['user.id', 'identity(user.company) company'])
No alias was set before invoking getRootAlias().
Se produit lors d'un codice_58 (sans alias comme dans : codice_59 hérité de EntityRepository)
Il faut alors rajouter un alias pour l'entité courante ainsi :
$qb
 ->select('me')
 ->from(MonEntite::class, 'me')
Property \"metadata\" on resource \"App\\MonEntite\" is declared as a subresource, but its type could not be determined in.
Survient quand une entité étend une autre sans discriminator.
The association mon_entité1#entité2 refers to the owning side field mon_entité2#id which does not exist.
Si l'entité 2 ne fait pas référence à l'entité 1, supprimer dans l'entité 1, champ entité2, le codice_60.
The class 'Doctrine\Common\Collections\ArrayCollection' was not found in the chain configured namespaces App\Entity.
Il peut y avoir une entité avec une relation ManyToMany dans laquelle on met un ArrayCollection au lieu de l'entité demandée.
Sinon vérifier qu'on attend pas un PersistentCollection au lieu d'un ArrayCollection (ou vice-versa avec ->unwrap()).
The EntityManager is closed.
Cela survient quand l'EntityManager rencontre une exception. On peut :
if ($this->em->isOpen()) {
 $this->em->persist($entity);
 $this->em->flush($entity);
 if (!$this->em->isOpen()) {
 $this->em = $this->em->create(
 $this->em->getConnection(),
 $this->em->getConfiguration()
The identifier id is missing for a query.
Se produit lors d'un repository->find(null).
The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue.
Si le paramètre "server_version" est présent dans le "DATABASE_URL", l'ajouter, sinon le retirer.
The table with name 'xxx' already exists.
Si cela survient lors du codice_61, create ou update sur une base vide, et qu'il n'y a pas de doublon dans le dossier "Entity" :
Uncaught PHP Exception Doctrine\Common\Proxy\Exception\UnexpectedValueException: "Your proxy directory "var/cache/prod/doctrine/orm/Proxies" must be writable".
Si cela se produit avec codice_36 et pas codice_66 dans le .env :
 rm -Rf var/cache/ var/log
Uncaught Symfony\Component\Debug\Exception\UndefinedFunctionException: Attempted to call function "apc_fetch".
 sudo pecl install apcu
 sudo pecl install apcu_bc
 sudo apt-get install -y php7.2-apcu php7.2-apcu-bc
Unexpected non-iterable value for to-many relation.
Modifier la déclaration du champ en erreur avec un itérable. Ex :
public $mesObjets = new ArrayCollection();
S'il n'y a pas de champ en erreur, il faut le retrouver avec codice_67 dans AbstractItemNormalizer.
Unknown database.
Lancer "doctrine:database:create" :
bin/console d:d:c
Puis rajouter les éventuelles tables :
bin/console doctrine:schema:update --force
Unrecognized field (ORMException).
Se produit quand un findBy de repository ne trouve pas un champ de son entité. Cela peut être résolu avec :
WARNING [cache] Failed to save key... "cache-adapter" => "Symfony\Component\Cache\Adapter\ApcuAdapter".
Ajouter codice_69 dans php.ini.
DoctrineMigrations.
S'il n'exécute pas tout (sans logs même en -vvv).
Séparer en plusieurs migrations, notamment les créations de tables et de fonctions.
The schema provider is not available.
Remplacer "connection" par "em" dans doctrine_migrations.yaml :
doctrine_migrations:
 em: default
Syntax error or access violation.
Il faut probablement échapper des caractères, par exemple avec la syntaxe heredoc ou $this->connection->quote().
API Platform.
Invalid IRI.
Ajouter le getId() dans l'entité récupérée par IRI.
InvalidArgumentException: "No item route associated with the type xxx.
Se produit quand on a pas une route POST sans route GET, ou si le GET n'a pas d'ID pour créer des URI. Il faut donc en créer une, mais pas forcément besoin de créer un contrôleur :
 * @ApiResource(
 * itemOperations={
 * "get"={
 * "method"="GET",
 * "controller"=NotFoundAction::class,
 * "read"=false,
 * "output"=false,
 * },
No identifiers defined for resource of type.
 * @ApiProperty(identifier=true)
 private $id;
Si aucun ID n'est possible, en renvoyer "1" par exemple.
Unable to generate an IRI for.
En général, rajouter un getId() dans l'entité.
The total number of joined relations has exceeded the specified maximum. Raise the limit if necessary with the \"api_platform.eager_loading.max_joins\" configuration key, or limit the maximum serialization depth using the \"enable_max_depth\" option of the Symfony serializer.
Sur MySQL (ou MariaDB) il existe un maximum de 64 jointures. Donc s'il n'est pas possible d'augmenter max_joins, il faut limiter les jointures par les deux annotations suivantes :
 * @API\ApiSubresource(maxDepth=1)
 * @ORM\OneToMany(targetEntity="MonEntité", mappedBy="monChamp", fetch="EXTRA_LAZY")
Twig.
Un template Twig ne se rafraichit pas dans la navigateur.
En local, dans .env, passer de codice_36 à codice_71.
Sinon vider le cache Symfony.
Array to string conversion.
Plusieurs solutions sont possibles pour afficher un tableau dans un template JSON.
"my_key": ,
voire :
"my_key": ,
"my_key": "",
double quoted property.
Une virgule de trop après une clé.
key \"id\" for array with keys \"0\" does not exist..
Appel d'une clé absente d'un tableau.
The CSRF token is invalid. Please try to resubmit the form.
Dans le formulaire concerné, ajouter la ligne :
 public function configureOptions(OptionsResolver $resolver)
 $resolver->setDefaults([
 'csrf_protection' => false,
unexpected token "punctuation" of value "{".
Au choix :
xmlParseEntityRef: no name.
Un "&" n'est pas échappé en XML. Il faut ajouter un filtre "| escape" en Twig pour le faire.
PhpStorm.
Les logs sont accessibles par :
 tail -f ~/.PhpStorm2019.2/system/log/idea.log
Certains dossiers sont rouges (exclus) dans la navigation et l'indexation, alors qu'ils ne sont pas censés l'être.
Fermer le projet, supprimer le .idea, et le rouvrir.
Impossible de CTRL + clic dans un .twig (chemin introuvable).
Vérifier que le plugin Symfony de PhpStorm est bien installé et activé.
Si cela persiste, dans "File\Settings\PHP\Symfony\Twig \ Template", ajouter le chemin vers les .twig importés du bundle concerné.
L'historique Git d'un dossier est tronqué.
Si codice_72 montre plus de commits que le clic droit / Git / Show history, alors cliquer sur Files / Invalidate Caches, et tout cocher.
Dans l'onglet Git, on ne voit pas la liste des fichiers modifiés.
Dans Settings, Version Control, Commit, décocher "Use non-modal commit interface".
Un fichier a disparu des onglets, a un icône de point d'interrogation, et ne peut être rouvert.
Il n'est pas ou plus associé à un type de fichier, aller dans "File\Associate with File Type".
incoming connection from xdebug.
Lors d'une erreur au remplissage de cette pop-up, on peut la corriger dans .idea/workspace.xml.
No differences files that files have differences only in line separators.
Les scripts lancés depuis PhpStorm sous Windows modifient les retours à la ligne (CLRF to LF).
Changer l'option dans "Settings/Preferences | Editor | Code Style | Line separator" vers "System dependent".
Sinon, configurer git :
 git config --global core.autocrlf true
Undefined class xxx.
Une classe existe mais PhpStorm ne la voit pas : ajouter son dossier dans File\Settings\Directories, retirer l'exclusion (rouge) du dossier concerné.
Xdebug.
Des logs Xdebug sont ajoutables dans php.ini :
xdebug.remote_log = /var/www/xdebug.log
xdebug.show_error_trace = 1
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = /tmp/
xdebug.overload_var_dump = 1
xdebug.cli_color = 1
En CLI, la console s'ouvre sur default_prepend.php et on ne voit pas l'exécution de la commande.
Cela se produit quand plusieurs projets sont ouverts dans PhpStorm et que la commande n'appartient pas au principal.
Le navigateur déclenche bien le débogage pas à pas, mais on ne voit pas le fichier PHP dans l'IDE.
Il manque le mapping (par exemple avec les routes du conteneur). Par exemple dans PhpStorm, Servers, cocher "Use path mappings" et le renseigner.
Messages d'erreur.
Cannot find file '/usr/local/php/php/auto_prepends/default_prepend.php' locally.
Sous PhpStorm avec Docker, cliquer sous l'erreur pour modifier le "path mapping".
Code coverage needs to be enabled in php.ini by setting 'xdebug.mode' to 'coverage'.
Pour éviter d'éditer le .ini, on peut remplacer :
 bin/phpunit --coverage-text
par :
 php -dxdebug.mode=coverage bin/phpunit --coverage-text
Could not connect to client.
Le serveur est introuvable, changer :
Gateway Timeout.
Cette erreur du navigateur généralement due au serveur Web.
De plus, on peut aussi revoir les variables du php.ini. Ex :
max_execution_time=30 # 30 s par défaut
max_input_time=-1 # Utilisera "max_execution_time" si -1, sinon la valeur indiquée
Failed to read FastCGI header.
Si le log Apache affiche cela lors d'un "Gateway Timeout", il faut ajouter à httpd.conf :
 ProxyTimeout 6000
 <IfModule mod_fcgi.c>
 FcgidProcessLifeTime 6000
 FcgidBusyTimeout 6000
 FcgidConnectTimeout 6000
 FcgidIdleTimeout 6000
 FcgidInitialEnv 6000
 FcgidIOTimeout 6000
 IdleTimeout 6000
 IPCConnectTimeout 6000
 IPCCommTimeout 6000
 IdleScanInterval 6000
 </IfModule>
Parfois il convient aussi de modifier le php.ini :
opcache.optimization_level=0xFFFFFBFF
xdebug.remote_cookie_expire_time=6000
Enfin, sur PhpStorm on rencontre cela dans le cas de sous-requêtes qui dépassent la valeur du paramètre "Max. simultaneous connections".
No code coverage driver is available.
Installer ou activer Xdebug. Il doit apparaitre ensuite dans codice_75.
Remote file path 'default_prepend.php' is not mapped to any file path in project.
Sous PhpStorm il faut décocher dans les "settings", "debug", les deux cases "Force break...", puis de redémarrer l'IDE.
Time-out connecting to client.
Changer xdebug.remote_host ou xdebug.remote_port car le serveur existe mais n'écoute pas le port spécifié.
Si le navigateur ne déclenche plus le débogage sur l'IDE, alors que ce dernier écoute et que la clé du navigateur est bien définie, c'est peut-être le pare-feu qui bloque. Exemple de reset sur Linux avec iptables :
 iptables --policy INPUT ACCEPT;
 iptables --policy OUTPUT ACCEPT;
 iptables --policy FORWARD ACCEPT;
 iptables -Z; # zero counters
 iptables -F; # flush rules
 iptables -X; # delete all extra chains
Waiting for incoming connection with ide key 'xxx'.
Xdebug peut marcher pour certains sites, sauf un qui ne déclenche rien dans l'IDE. Ce message apparait alors dans PhpStorm si on clique sur "Debug".
GraphQL.
Fields "maRoute" conflict because they have differing arguments. Use different aliases on the fields to fetch both if this was intentional..
Si on appelle plusieurs fois la même route dans la même requête, il faut définir des alias. Ex :
mutation {
 maRoute(...)
 aliasMaRoute: maRoute(...)
Le résultat de la requête sera donc un tableau avec ['data' => maRoute => ...], [aliasMaRoute => ...
Windows.
imagecreatefromstring(): gd-png: libpng warning: Interlace handling should be turned on when using png_read_image.
Remplacer le php_gd2.dll du PHP 7.4.33 par celui du 7.4.2 téléchargé depuis https://www.pconlife.com/viewfileinfo/php-gd2-dll/.
Exemple du chemin par défaut :
 C:\wamp64\bin\php\php7.4.33\ext\