Puncte:0

Implementarea aplicației symfony 5 pe găzduire partajată doar cu acces FTP

drapel ru

Încerc să implementez o aplicație web Symfony pe un server care oferă doar acces ftp, fără posibilități ssh, și am putut pune fișiere doar în două foldere rădăcină: /data și /html. Încerc să pun fișierele Symfony în folderul html, dar htaccess-ul creat de apache webpack nu funcționează, funcționează doar pe local și primesc o eroare 500 pe ecran. Nici jurnalul nu ajută, doar mesaje generice 404.

Ceva gânduri? Încerc să urmez instrucțiunile din alte postări ca aceasta de la @runawaycoin, dar fără succes: https://medium.com/@runawaycoin/deploying-symfony-4-application-to-shared-hosting-with-just-ftp-access-e65d2c5e0e3d

Am pus .htaccess pe care pachetul Symfony apache îl generează local în folderul /html ar trebui să fie singura configurație.

Acesta este codul de la .htaccess:

# Utilizați controlerul frontal ca fișier index. Servește ca soluție de rezervă atunci când
# orice altă rescriere/redirecționare eșuează (de exemplu, într-un mediu alias fără
# mod_rewrite). În plus, acest lucru reduce procesul de potrivire pentru
# pagina de pornire (calea „/”) deoarece altfel Apache va aplica regulile de rescriere
# la fiecare fișier DirectoryIndex configurat (de exemplu, index.php, index.html, index.pl).
DirectoryIndex index.php
`

# În mod implicit, Apache nu evaluează legăturile simbolice dacă nu ați activat acest lucru
# caracteristică în configurația serverului dvs. Anulați comentariile următoarei rânduri dacă dvs
# instalați elementele ca legături simbolice sau dacă întâmpinați probleme legate de legăturile simbolice
# când compilați elemente LESS/Sass/CoffeScript.
# Opțiuni +FollowSymlinks

# Dezactivarea MultiViews previne negocierea nedorită, de ex. „/index” nu ar trebui să se rezolve
# la controlerul frontal „/index.php”, dar să fie rescris în „/index.php/index”.
<IfModule mod_negotiation.c>
    Opțiuni -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine Pornit

    # Determinați automat RewriteBase și setați-l ca variabilă de mediu.
    # Dacă utilizați aliasuri Apache pentru a face găzduire virtuală în masă sau ați instalat
    # proiect într-un subdirector, calea de bază va fi antepusă pentru a permite corect
    # rezoluția fișierului index.php și redirecționarea către URI-ul corect. O sa
    # lucrați și în medii fără prefix de cale, oferind un sistem sigur, de dimensiune unică
    # se potrivește tuturor soluțiilor. Dar, deoarece nu aveți nevoie de el în acest caz, puteți comenta
    # următoarele 2 linii pentru a elimina supraîncărcarea.
    RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
    RewriteRule .* - [E=BASE:%1]

    # Setează antetul HTTP_AUTHORIZATION eliminat de Apache
    RewriteCond %{HTTP:Authorization} .+
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

    # Redirecționați către URI fără controler frontal pentru a preveni conținutul duplicat
    # (cu și fără `/index.php`). Faceți această redirecționare doar pe inițială
    # rescrie de către Apache și nu în ciclurile ulterioare. Altfel am primi un
    # buclă de redirecționare fără sfârșit (cerere -> rescrie în controlerul frontal ->
    # redirecționare -> cerere -> ...).
    # Deci, în cazul în care primiți o eroare „prea multe redirecționări” sau veți fi întotdeauna redirecționat
    # la pagina de pornire deoarece Apache-ul dvs. nu expune REDIRECT_STATUS
    # variabilă de mediu, aveți 2 opțiuni:
    # - dezactivați această funcție comentând următoarele 2 rânduri sau
    # - utilizați Apache >= 2.3.9 și înlocuiți toate steaguri L cu steaguri END și eliminați
    # după RewriteCond (cea mai bună soluție)
    RewriteCond %{ENV:REDIRECT_STATUS} =""
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    # Dacă numele fișierului solicitat există, pur și simplu serviți-l.
    # Vrem să lăsăm Apache să servească doar fișiere și nu directoare.
    # Rescrie toate celelalte interogări la controlerul frontal.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        # Când mod_rewrite nu este disponibil, indicăm o redirecționare temporară a
        # pagina de pornire către controlerul frontal în mod explicit, astfel încât site-ul web
        # iar linkurile generate pot fi încă folosite.
        RedirectMatch 307 ^/$ /index.php/
        # RedirectTemp nu poate fi folosit în schimb
    </IfModule>
</IfModule>

Acum încerc să pun un simplu index.php cu un „bună ziua” la nu funcționează :(

Cei de la asistență îmi spun doar că avem doar folderul /html și folderul /data pentru a funcționa.

Mulțumiri!

drapel kz
„Primesc o eroare 500 pe ecran. Nici jurnalul nu ajută, ci doar mesaje generice 404”. - Trebuie să căutați în „jurnalul de erori” pentru detalii despre eroarea 500. „Mesaje 404” sunt în mod normal înregistrate în „jurnalul de acces”, nu „jurnalul de erori”.
MartynW avatar
drapel de
Ai ajuns mai departe cu asta?Încerc să fac fișierul .htaccess să funcționeze cu https pe serverul gazdă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.