Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze ścieżką dla funkcji spl_autoload_register
Forum PHP.pl > Forum > PHP
matti9410
Cześć!
Próbuję wczytać bibliotekę PhpWord za pomocą tutoriala z YT na serwerze localhost xampp wszystko działa fajnie i biblioteka się wczytuje.
Problem pojawia się na serwerze www - hosting unixstorm.
Pliki biblioteki trzymam w katalogu
"/home/xxx/domains/xxx.pl/public_html/wp-content/plugins/xxx/lib/PHPOffice/PhpWord/"

Kod gdzie wykorzystuje spl_autoload_register
  1. spl_autoload_register(function ($class) {
  2. $path = PLUGIN_PATH . "lib/";
  3.  
  4. if (is_file($path.$class.".php")) {
  5. echo "Plik istnieje";
  6. require_once $path.$class.".php";
  7. }else{
  8. echo "</br>Brak pliku </br>";
  9. echo $path.$class.".php </br>";
  10. }
  11. });
  12.  
  13. use \PHPOffice\PhpWord\PhpWord;
  14.  
  15. //$phpWord = new PhpWord();
  16.  
  17. //echo "<pre>";
  18. //print_r($phpWord);
  19. //echo "</pre>";


Gdy odkomentuje linie
  1. //$phpWord = new PhpWord();


wtedy strona odpowiada mi komunikatem
Kod
Brak pliku
/home/xxx/domains/xxx.pl/public_html/wp-content/plugins/xxx/lib/PHPOffice\PhpWord\PhpWord.php


Nie rozumiem dlaczego tak się dzieje, gdzie plik "PhpWord.php" fizycznie jest w tej lokalizacji.
nospor
A probowales ustawic poprawna sciezke? Czyli nie
/home/xxx/domains/xxx.pl/public_html/wp-content/plugins/xxx/lib/PHPOffice\PhpWord\PhpWord.php

a:
/home/xxx/domains/xxx.pl/public_html/wp-content/plugins/xxx/lib/PHPOffice/PhpWord/PhpWord.php
matti9410
Ta końcówka
Kod
\PhpWord\PhpWord.php

generuje mi się sama automatycznie... nie wiem jak zmienić "\" na "/" ją zmienić
nospor
Jakie automatycznie... Sam ja generujesz o tutaj:

require_once $path.$class.".php";

uzyj str_replace i zamien \ na /
matti9410
Jest lepiej, ale dziwnie wykonuje się poniższy skrypt bo mam odpowiedź

Kod
Hello
Plik istnieje
/home/xxx/domains/xxx.pl/public_html/testproject/lib/PHPOffice/PhpWord/PhpWord.php
Brak pliku


Tak jak by się nie wykonywał skrypt?

  1. <?php
  2.  
  3. echo "Hello </br>";
  4.  
  5. spl_autoload_register(function ($name_file) {
  6. //$path = PLUGIN_PATH . "lib/PHPOffice/PhpWord/";
  7. $path = str_replace("\\", "/", __DIR__ . "/lib/" .$name_file.".php");
  8.  
  9. if(is_file($path)){
  10. echo "Plik istnieje </br>";
  11. echo $path . "</br>";
  12. require_once $path;
  13. }else{
  14. echo "Brak pliku </br>";
  15. }
  16. });
  17.  
  18. use \PHPOffice\PhpWord\PhpWord;
  19.  
  20. $phpWord = new PhpWord();
  21.  
  22. echo "<pre>";
  23. print_r($phpWord);
  24. echo "</pre>";
  25.  
  26. echo "END </br>";
  27.  
  28. ?>
nospor
No ale wyswietl $path gdy krzyczy ze brak pliku. Bedziesz widzial dokladnie czego nie ma
matti9410
Zwraca

Kod
Hello
Plik istnieje
/home/xxx/domains/xxx.pl/public_html/testproject/lib/PHPOffice/PhpWord/PhpWord.php
Brak pliku
/home/xxx/domains/xxx.pl/public_html/testproject/lib/PhpOffice/PhpWord/Media.php


Nie wiem dlaczego zmieniła się tylko nazwa folderu Office z "PHPOffice" na "PhpOffice". plik media.php istnieje w tej lokalizacji.
nospor
Miedzy PHPOffice, a PhpOffice jest naprawde wielka roznica. To dwa rozne katalogi. I zakladam ze masz tylko jeden z nich.
Pewnie twoj plik PhpWord.php uzywa tego Media ze zlym namespace.
matti9410
Najlepsze jest to, że na localhost (xampp) nie ma takiego problemu i wszystko działa prawidłowo, a na hostingu już nie.
Masz może pomysł jak to naprawić?
nospor
Bo localhost pewnie masz windows.
Jak poprawic? No juz ci napisalem przeciez. Albo zmien nazwy katalogow, albo popraw odwolania w namespacach. Albo jedno albo drugie.
matti9410
Dobra, można zamknąć temat zmieniłem nazwę z PHPOffice na PhpOffice i działa.
Dziękuję za pomoc! smile.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.