Bug #79729 [Asn]: Strings missing last character (Apache + OPcache)

From: Date: Tue, 07 Jul 2020 12:56:46 +0000
Subject: Bug #79729 [Asn]: Strings missing last character (Apache + OPcache)
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-227856@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79729&edit=1 ID: 79729 Updated by: cmb@php.net Reported by: ca at lsp dot net Summary: Strings missing last character (Apache + OPcache) Status: Assigned Type: Bug Package: opcache Operating System: Windows Server 2016 Standard PHP Version: 7.3.19 Assigned To: cmb Block user comment: N Private report: N New Comment: > Other than that, "Opcode handlers are unusable due to ASLR." > warnings may occur on Windows, so we recommend to never disable > opcache.file_cache_fallback (which it is in your case); otherwise > the process exits, which is undesireable. That's actually nonsense wrt. apache2handler (assuming you're running a single httpd instance). That error can only occur on Apache startup, and in that case the base mapping file should be deleted, and Apache restarted. Or delete the base mapping file right away before restarting Apache. The base mapping file is in the temp folder, and its name is ZendOPcache.MemoryBase@<user>@apache2handler@<md5> This needs to be documented, and preferably also improved. Previous Comments: ------------------------------------------------------------------------ [2020-06-25 13:41:49] ca at lsp dot net Meanwhile, I opened bug 79735 for the "Call to undefined method" error. After some consideration though, the root cause could be the same. This is the *complete* log entry for the current issue in the PHP error log: ``` [24-Jun-2020 06:53:14 UTC] PHP Fatal error: Uncaught --> Smarty: Plugin 'cut_hea' not callable <-- thrown in C:\***\vendor\smarty\smarty\libs\sysplugins\smarty_internal_method_registerplugin.php on line 50 ``` The short stacktrace suggests that this error occurred in an exception_handler or similar, and maybe OPcache isn't working properly in that context? ------------------------------------------------------------------------ [2020-06-25 10:30:13] ca at lsp dot net @cmb Thank you for the docs update, I have set those values now. Today I observed the following (possibly related) exceptions in the same instance, all in the context of web requests: ``` 10:14:02 CEST Error: Uncaught Error: Call to undefined method ***\MyDB::searchByCol() 10:20:10 CEST Error: Uncaught Error: Call to undefined method ***\MyDB::searchByCol() 10:23:33 CEST Error: Uncaught Error: Call to undefined method ***\MyDB::searchByCol() 11:03:03 CEST Error: Uncaught Error: Call to undefined method ***\MyDB::searchByCol() ``` (Note: The method MyDB::searchByCol() *does* exist.) The same issue occurred 3x on June 12, two days after we enabled OPcache (and one day after the upgrade to 7.3.19). Unfortunately I had obviously not restarted the Apache server after making the latest config changes, so the OPcache log verbosity was not sufficient for the web server requests (and possibly the file_cache value was not yet effective either), so I will have to wait and see if it occurs again. One thing I should mention though is that we run multiple branches simultaneously on that test server: - C:/app = test app for branch "develop" - C:/app-review/12345-foo = review app for branch "12345-foo" So could these issues be related to the fact that there are multiple MyDB.php files? I wonder if I have to enable opcache.revalidate_path to prevent the wrong file from being loaded by OPcache? ------------------------------------------------------------------------ [2020-06-24 14:48:37] cmb@php.net I've just amended the recommended settings section in the docs[1]; will take a while until it is rolled out to the server. I don't think there is any valuable data you could provide, if the problem occurs again. Of course, in that case, check the logs, and maybe it's useful to set opcache.log_verbosity_level to 3 or 4 in advance. [1] <http://svn.php.net/viewvc?view=revision&revision=350081> ------------------------------------------------------------------------ [2020-06-24 13:14:34] ca at lsp dot net > To actually enable the file_cache_fallback, you also need to set opcache.file_cache to an already existing (...) directory. Thanks for the clarification. I would have expected the "Recommended php.ini settings" [1] to mention this though. Is it worth creating a separate bug for this documentation improvement? As regards the truncated strings, is there any valuable data I could collect when the issue appears again, before trying opcache.optimization_level=0? [1] https://www.php.net/manual/de/opcache.installation.php#opcache.installation.recommended ------------------------------------------------------------------------ [2020-06-24 12:43:29] cmb@php.net > opcache.file_cache => no value => no value To actually enable the file_cache_fallback, you also need to set opcache.file_cache to an already existing (and writeable, and preferably empty) directory. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=79729 -- Edit this bug report at https://bugs.php.net/bug.php?id=79729&edit=1

« previous php.bugs (#227856) next »