一次Debug的遐想
ThinkPHP3.2 + PHP5.6 + Nginx1.8
Bug描述
上传文件提示 404,找不到文件。
Debug 过程
“我是上传文件,为啥会404?会不会是请求链接写错了?”
调试
操作:直接复制链接到浏览器访问。 结果 :状态码 200 ok 。
“链接没问题,难道是初始化工具类有问题?”
调试
操作:在工具类构造函数,打印数据并终止。 结果 :仍然404,跟工具类无关
“难道是框架自带Bug?”
调试
操作:新建项目,原生代码编写一个上传测试文件。 结果 :仍然404,跟框架无关
“既然跟程序无关,那就是服务器跟PHP问题了,是不是PHP有上传的控制参数默认关闭,然后我没有打开?没道理的,就算是,也不应该提示404,应该是服务器问题,可是直接访问链接是有效的,上传文件就404了,会不会是权限?最有可能就是这东西了,而且linux 下的权限控制非常严,上传文件要在某个目录先生成临时文件,然后通过复制函数,移动到指定目录才上传成功,如果程序对临时文件夹没有上传权限的话,报404是完全有可能的,问题是临时文件在哪儿呢?会上传到那个文件呢?”
调试
操作:google + baidu 结果 :都写的什么** 玩意,完全没有想要的内容。
“**,难道我要一个一个文件翻?对了,不是有日志?先看看服务器日志有没有信息“
调试
操作:打开nginx log 文件 结果 :清清楚楚的写着 /***/***/temp 目录,权限不足!
剩下的事情就很简单了, 一个修改权限语句完事。
总结 : 1.出现 bug时 ,一定要先想清楚问题会出现在哪个环节,接着就是查看运行的日志文件,一般都会有提示,如果看不懂什么意思,复制google 一下,一般都会找到问题的解决方案,除非你的bug已经达到深度无人涉及的程度。 2.对程序的了解程度,能有效的提高Debug的排错时间,如果换做一个菜鸟,估计写个原生上传都有难度,更不用说,看log,翻墙google了, 3.Debug 的速度能通过排错的经验,以及对程序的了解程序提升,正确的Debug方案能通过先人的教导获得。 4.多总结,多分享,主动学习往往比被动学习有效!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.
