Αυτό μου κάνει για θέμα του server.
Ο κώδικας στο Joomla που φορτώνει το provider.php είναι στο αρχείο libraries/src/Extension/ExtensionManagerTrait.php
. Η function loadExtension
κάνει το εξής:
// The path of the loader file
$path = $extensionPath . '/services/provider.php';
if (is_file($path)) {
// Load the file
$provider = require_once $path;
// Check if the extension supports the service provider interface
if ($provider instanceof ServiceProviderInterface) {
$provider->register($container);
}
}
Οι σημαντικές γραμμές είναι αυτές που έβαλα με bold. Δηλαδή πρώτα ρωτάει την PHP αν το αρχείο services/provider.php
υπάρχει, και μετά προσπαθεί να το φορτώσει με την γραμμή που έχει το require_once.
Στην περίπτωσή σου η PHP λέει πως το (ήδη μετονομασμένο, άρα ανύπαρκτο πλέον) αρχείο υπάρχει. Ως εκ τούτου το Joomla εκτελεί την γραμμή με το require_once η οποία προφανώς αποτυγχάνει καθώς το αρχείο δεν υπάρχει πλέον.
Κανονικά, η PHP έχει μια πολύ μικρή cache για τις λειτουργίες του συστήματος αρχείων. Στην χειρότερη περίπτωση σε 1-2 δευτερόλεπτα βλέπεις την πραγματική εικόνα του συστήματος αρχείων, ως εκ τούτου το πρόβλημα εξαφανίζεται από μόνο του εντός ολίγου.
Ο μόνος λόγος που μπορώ να φανταστώ για αυτή την συνεχιζόμενη δυσλειτουργία είναι να έχουν θέσει το opcache.enable_file_override
σε 1. Σε αυτή την περίπτωση χρειάζεται να θέσουν και το opcache.revalidate_freq
σε μια μικρότερη τιμή, π.χ. 10. Σε αυτή την περίπτωση θα έχεις μεν την δυσλειτουργία απευθείας μετά την μετονομασία του αρχείου, πλην όμως θα σταματήσει μετά από τόσα δευτερόλεπτα όσα η τιμή της παραμέτρου opcache.revalidate_freq
. Αυτό σου δίνει μια καλή ισορροπία μεταξύ απόδοσης σε περιόδους υψηλού φόρτου και αποφυγής προβλημάτων κατά την διαχείριση του ιστοχώρου.
Nicholas K. Dionysopoulos
Lead Developer and Director
🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!