Home > Article > Backend Development > Problem with working directory in destructor in php
and found that there is only start in log.log and no finish. After clearing the contents in the log, modify the program: unset($test); Sure enough, there was a start and a finish. It seems that __destruct will be executed only after unset. But the matter is not over yet. I modified the program again, changed the __destruct function, and deleted the unset code:
At this time, 'finish' was actually printed on the screen, which proved that the destructor was indeed executed. After being puzzled, I started looking for information on the Internet and saw that error_log was used in the destructor of a friend and was executed. The difference from my usage is that he did not specify the error_log file, but set it to the default log file, so I simulated it and modified my program:
I found that the log.log still started after start, but there was no finish. And E:AppServApache2.2logserror.log (the default log file of my apache configuration) really has start and finish. It was a strange question and I couldn’t figure it out, so I went to the group to ask. My friends in the group either asked me to check for syntax errors or to check file permissions. I made sure there were no problems with these two. I said, "There is no permission problem in the Windows system. It is definitely not caused by this." A group friend said: "windos system, no explanation!" I said: "This must have nothing to do with the system. I suspect it is an apache problem." So I restored the _log and ran it on the linux+nginx virtual machine.
log.log and start and finish are successfully written. This makes me doubt my judgment even more: it’s caused by apache So I struggled for an hour, installed apache on the server and ran the file. Still the same result, finish was not successfully written. At this time, a colleague told me, try writing an absolute path, so I modified another _log
Look at it again and write "finish" successfully. I'm so excited. I finally found the problem. I modified the program again.
It turns out that the destructor of apache will change the directory of the current program, so if you use a relative directory, the corresponding file will not be found, and the writing will of course fail. Learning a language is not easy, it pays to practice more.
|