Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ograniczenie open_basedir
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Uruchamiam aplikacje (autorski framework testowany na localhost) pierwszy raz w domenie i pojawia się błąd: Warning: require(): open_basedir restriction in effect!

Aplikacja jest w katalogu głównym /, natomiast domena jest skierowana na folder /public/ - na serwerze jest domyślnie włączona separacja stron stąd ten błąd, można wyłączyć i jest Ok.

Nie bez powodu domyślnie jest jednak włączona, a ze względu na bezpieczeństwo rozprzestrzenienia wirusa, to chyba taka przypadłość po Covid.

Pytanie, czy uruchamiając framework Symfony, który ma podobną strukturę katalogów, itp. też trzeba wyłączyć open_basedir, czy jakoś można to obejść?
Logicznie trzeba wyłączyć, aby uruchomić Symfony. Wolę jednak dopytać jak to jest z tym open_basedir?


Ten post edytował Malinaa 28.08.2024, 22:54:46
Go to the top of the page
+Quote Post
Salvation
post
Post #2





Grupa: Zarejestrowani
Postów: 403
Pomógł: 72
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Symfonowy index.php w katalogu /public/:
  1. <?php
  2.  
  3. use App\Kernel;
  4.  
  5. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  6.  
  7. return function (array $context) {
  8. return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  9. };

A my nie wiemy co Ty masz w swoim idex.php, bo nie wrzuciłeś go tutaj.
Go to the top of the page
+Quote Post
Malinaa
post
Post #3





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


U mnie jest tak:

  1. ### BASE PATH ###
  2. define('DS', DIRECTORY_SEPARATOR);
  3. define('BASE_DIRECTORY', dirname(__DIR__) . DS);
  4.  
  5. ### FUNCTIONS - application starting
  6. require(BASE_DIRECTORY . 'application' . DS . 'start.php';


i już na require() krzyczy wyłącz ograniczenie open_basedir. ... potem jest Super.
Tylko, czy bezpiecznie.

Ten post edytował Malinaa 29.08.2024, 12:49:14
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




moze zamiast wylaczac to poprostu okresl jakies katalogi sa dostepne dla open_basedir

cos ala:
open_basedir = /twoj/katalog/1;/tmp;itditd
Go to the top of the page
+Quote Post
Malinaa
post
Post #5





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 29.08.2024, 14:23:46 ) *
moze zamiast wylaczac to poprostu okresl jakies katalogi sa dostepne dla open_basedir

cos ala:
open_basedir = /twoj/katalog/1;/tmp;itditd



Nie za bardzo tak mogę, tzn. wolę bez podobnych kombinacji, poza tym czy Symfony przy instalacji wymaga takich zabiegów na serwerze.
Nie, działa "z automatu" i tu też bym tak chciał, ale na ten czas działa z automatu po wyłączeniu.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a jaka to kombinacja dac dostep do folderu twojej aplikacji? Czyli lepiej wg ciebie jest dac dostep do calego serwera? (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Salvation
post
Post #7





Grupa: Zarejestrowani
Postów: 403
Pomógł: 72
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


A jaką masz strukturę katalogów na serwerze?
Go to the top of the page
+Quote Post
Malinaa
post
Post #8





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Teoretycznie wyłączenie jest tylko dla domeny (strony), ale dziura powstaje i Matrix może się przebić (IMG:style_emoticons/default/wink.gif)
Nie w tym kłopot, a dobrze byłoby poprawić kod tak, aby działał bez wyłączania open_basedir.

Struktura katalogów jest taka (w katalogu głównym domeny):
/
application
public (public folders)
src
...

Całość jest tutaj: https://github.com/artimman/dbmframework

Domena jest skierowana na /public/ i kłopot jest taki,
że nie można dostać się do katalogów niżej bez wyłączenia.

Chciałbym, aby wystarczyło zrobić jakiś drobny zabieg kosmetyczny, np.
z define('BASE_DIRECTORY', dirname(__DIR__) . DS) ?

Co ciekawe, sprawdziłem domenę na której mam stronę w Symfony i dla tej strony też mam Separacje stron "Wyłączoną", czyli musiałem ją wyłączyć, aby zainstalować Symfony w domenie.
Być może frameworki, które są skierowane na katalog /public/ wszystkie tak już mają i nie da się tego ominąć (też w moim autorskim frameworku).
A miało byc mega bezpiecznie dzieki zastosowaniu struktury /public/, a tu wychodzi, że mamy coś za coś. No chyba, że jest coś jeszcze do odkrycia, kto wie.
Bo teraz to nie wiem, czy muszę z tym walczyć w moim frameworku, czy tak ma być? To taki frameworkowy standard (IMG:style_emoticons/default/smile.gif)

Ten post edytował Malinaa 29.08.2024, 18:04:12
Go to the top of the page
+Quote Post
Salvation
post
Post #9





Grupa: Zarejestrowani
Postów: 403
Pomógł: 72
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Do /public/ na hostingu wrzuć zawartość swojej aplikacji, a domenę spointuj na /public/public/
Powinno zadziałać i rozwiązać twój problem.
Go to the top of the page
+Quote Post
Malinaa
post
Post #10





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Możliwe, że zadziała, ale chciałbym to zrobić jak najbardziej naturalnie. Naturka się liczy.

Alternatywne rozwiązanie z .htaccess, które teoretycznie też może zadziałać ( tylko, czy obędzie się bez kopiowania, resetowania, klonowania.... ; )
1. Skierowanie domeny + instalacji frameworka (Symfony, itp.) do katalogu nadrzędnego [folder_nadrzedny] z aktywną separacją,
2. Umieszczenie instalacji Symfony (publicznej) wewnątrz katalogu [folder_podrzedny]
3. Skierowanie poprzez plik .htaccess ruchu aplikacji bezpośrednio z nazwy domeny do katalogu [folder_podrzedny], w którym mieści się instalacja publiczna, dostępna dla użytkowników.

Framework jest na hostingu, gdzie można włączyć lub wyłączyć separacje i tyle, dlatego pewnie powinien być na jakimś serwerze deweloperskim, vps, vpn, itp. ?
Wystarczyłoby wówczas jak nospor napisał określić dostęp do katalogu dla open_basedir.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.08.2025 - 10:29