Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Σε WordPress multisite, εγκατεστημένο σε dedicated server, με το open_basedr restriction ενεργοποιημένο, λαμβάνω σε κάθε request ένα σκασμό από warnings σαν τα παρακάτω:

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/cdn/cdn_transform.class.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/cdn/class-cdn-controller.php on line 163

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/cdn/cdn_transform.interface.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/cdn/class-cdn-controller.php on line 163

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/cdn/cdn_transform.trait.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/cdn/class-cdn-controller.php on line 163

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/transform/transform.class.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/cdn/class-cdn-transform.php on line 14

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/transform/transform.interface.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/cdn/class-cdn-transform.php on line 14

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/transform/transform.trait.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/cdn/class-cdn-transform.php on line 14

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/lazy_load/lazy_load_transform.class.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/lazy-load/class-lazy-load-controller.php on line 513

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/lazy_load/lazy_load_transform.interface.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/lazy-load/class-lazy-load-controller.php on line 513

[08-Jul-2025 17:33:24 UTC] PHP Warning:  spl_autoload(): open_basedir restriction in effect. File(smush/core/lazy_load/lazy_load_transform.trait.php) is not within the allowed path(s): ({user-home}/.composer:{user-home}/web/{site}/public_html:{user-home}/web/{site}/private:{user-home}/web/{site}/public_shtml:{user-home}/tmp:/tmp:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt) in {user-home}/web/{site}/public_html/wp-content/plugins/wp-smushit/core/lazy-load/class-lazy-load-controller.php on line 513

Σε πρώτη φάση, απενεργοποίησα τα εν λόγω plugins (παραπάνω φαίνεται μόνο το WP-Smushit, αλλά είναι κι άλλα), και το αποτέλεσμα ήταν να παίρνω warnings για άλλα plugins που δεν τα έπαιρνα πριν!

Σε δεύτερη φάση, παρατηρώντας το pattern (class/interface/trait και τούμπαλιν) θυμήθηκα ότι έχω βάλει στο mu-plugins τον παρακάτω κώδικα (μεταξύ άλλων):

spl_autoload_extensions('.class.php,.interface.php,.trait.php');
spl_autoload_register();

...το οποίο δεν μπορώ να απενεργοποιήσω, γιατί η περισσότερη custom λειτουργικότητα εξαρτάται από αυτό...

Γιατί όμως το κάνει αυτό; Υποτιθεται ότι η spl_autoload() ψάχνει στο include_path, το οποίο είναι σωστά ορισμένο, και δεν παραβιάζει τα allowed paths:

{user-home}/web/{site}/private/lib/class:.:/usr/share/php

Καμιά ιδέα;

 

Δημοσ.

Βλέπω ένα .composer μέσα στα warnings. Αν το WP χρησιμοποεί composer (που υποψιάζομαι ότι ισχύει) τότε δεν χρειάζεσαι autoload. To autoload script δημιουργείται αυτόματα μετά από κάθε αλλαγή στο composer.json με την εντολή composer dump-autoload. Οπότε το λάθος σου μάλλον είναι ο κώδικας που έβαλες έξτρα.

Δημοσ.
1 ώρα πριν, k33theod είπε

Βλέπω ένα .composer μέσα στα warnings.

Έχει μπει στα allowed paths από το control panel χρησιμοποιώ (HestiaCP). Δεν κάνει καμιά διαφορά, ουδέτερο είναι.

1 ώρα πριν, k33theod είπε

Αν το WP χρησιμοποεί composer (που υποψιάζομαι ότι ισχύει)

Απ' τη μάνα του, όχι. Κάποια plugins χρησιμοποιούν κώδικα που έχουν ενσωματώσει με composer, και εκτελούν κανονικά το vendor/autoload τους.

1 ώρα πριν, k33theod είπε

Οπότε το λάθος σου μάλλον είναι ο κώδικας που έβαλες έξτρα.

Αυτός ο κώδικας βρίσκεται εκεί για να προσθέσει έναν autoloader για τη δική μου (μεγάλη!) ιεραρχία από classes/traits/interfaces. Εγώ δεν χρησιμοποιώ composer. Θα μπορούσα βέβαια, και αυτό σκέφτομαι να κάνω όταν βρω χρόνο και όρεξη.

Η απορία μου είναι γιατί βγαίνουν τα warnings. Δεν βγάζει νόημα.

Πχ έστω ότι το WP-SmushIt εκτελεί μία 

if(class_exists('cdn_transform')) {
	...
}

Οκ, ψάχνει τους autoloaders έναν-έναν, δεν τη βρίσκει, καταλήγει στον δικό μου, ψάχνει στο include_path (που συμμορφώνεται με το open_basedir restriction!), δεν τη βρίσκει, θα έπρεπε απλά να επιστρέφει false.

Το warning που κολλάει; 🤔

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...