Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de l'erreur de segmentation du script php

Comment résoudre le problème de l'erreur de segmentation du script php

藏色散人
藏色散人original
2020-09-12 09:17:262497parcourir

Solution à l'erreur de segmentation du script PHP : 1. Mettez à niveau la version PHP 2. Supprimez les fichiers "/etc/pki/nssdb/pkcs11.txt" et "/etc/pki/nssdb/cert9.db" ; . Peut.

Comment résoudre le problème de l'erreur de segmentation du script php

Recommandé : "Tutoriel vidéo PHP"

PHP utilise file_get_contents ou curl pour demander des noms de domaine https . Une erreur de défaut de segment se produira.

Le code PHP problématique est le suivant. Une erreur de segment se produira lors de l'exécution de cette commande PHP :

var_dump(file_get_contents("https://www.baidu.com"));

Solution :

1. Version PHP, Dans l'environnement 5.4, le problème ne peut pas être reproduit (le code d'exécution ci-dessus est PHP5.2)

2 Malheureusement, cela n'a pas été le cas. txt et /etc/pki/nssdb/cert9.db semblent être la clé, ici :-((La solution fournie sur les bugs Centos est réalisable après la pratique, mais elle réapparaîtra peu de temps après sa suppression)

Mais pourquoi une erreur de segmentation se produit-elle ?

Version PHP :

PHP 5.2.14 (cli) (built: Jul  3 2016 23:56:15)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator

Informations sur le système Linux :

LSB Version:    :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.3 (Final)
Release:        6.3
Codename:       Final

En vérifiant le journal du noyau et l'enregistrement gdb, vous pouvez constater que le problème se produit. sur libsqlite

Journal du noyau :

tail -f /var/log/messages
kernel: php[26564]: segfault at 8048 ip 00007f7a72fede9c sp 00007fffec90edf0 error 4 in libsqlite3.so.0.8.6[7f7a72fd1000+8c000]

enregistrement gdb :

Program received signal SIGSEGV, Segmentation fault.
0x00007fffe9651e9c in sqlite3_file_control () from /usr/lib64/libsqlite3.so.0

Dans la liste des bugs Centos, vous pouvez trouver une description de ce bug :

https://bugs.centos.org/view.php?id=7399
https://www.mankier.com/5/cert9.db

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn