Bonjour ça fais plusieurs jours que j'essaie de déployé mon site sur hostinger.
J'ai suivi la doc de symfony ça fonctionne en locale mais pas sur hostinger qui retour une erreur 403 donc j'ai ajouté un .access à la racine public_html avec directoryindex dedans est la ça me dirige vers la page d'accueil sauf que le css et les autres page ne fonctionne pas.
Comment faire s'il vous plaît c'est urgent merci d'indiquer les étapes parce que leurs doc est éclaté a hostinger et bien-sûr ils sont pas à jour avec symfony on peux auto installé que la version 3 alors que laravel on peux auto installé la version 9 bref merci !!
Le dossier public_html ce trouve dans domains/monsite.com/public_html/monsite/...
Et j'ai acces au dossier autour de domains : config, filebrowser, local, logs, SSH, subversion, vendor et au fichier bash_history, profile composer.json composer.lock
# Sets the HTTP_AUTHORIZATION header removed by Apache
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
# Redirect to URI without front controller to prevent duplicate content
# (with and without `/index.php`). Only do this redirect on the initial
# rewrite by Apache and not on subsequent cycles. Otherwise we would get an
# endless redirect loop (request -> rewrite to front controller ->
# redirect -> request -> ...).
# So in case you get a "too many redirects" error or you always get redirected
# to the start page because your Apache does not expose the REDIRECT_STATUS
# environment variable, you have 2 choices:
# - disable this feature by commenting the following 2 lines or
# - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
# following RewriteCond (best solution)
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
# Rewrite all other queries to the front controller.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# When mod_rewrite is not available, we instruct a temporary redirect of
# the start page to the front controller explicitly so that the website
# and the generated links can still be used.
RedirectMatch 307 ^/$ /index.php/
# RedirectTemp cannot be used instead
</IfModule>
</IfModule>
Et dans le .access du dossier public_html/ à coté du dossier monsite/ :
Le dossier public_html ce trouve dans domains/monsite.com/public_html/monsite/...
Si je comprends bien, tu as deux dossiers public_html ?
Le plus simple dans ce genre de cas, c'est de mettre le contenu du dossier public dans public_html(sans renommer ni quoi que ce soit) et les autres dossiers à côté du dossier public_html. Pour ce qui est de la publication des assets, si on doit effectuer des scripts sur la machine de production, il y a un ou deux paramètres qui peuvent être renseignés dans composer.json.
Ensuite, soit on a accès à la définition de l'hôte virtuel, soit comme il l'a déjà été fait, on installe symfony/apache-pack.
J'ai un seul dossier public_html dans lequel ce trouve mon projet symfony avec dedans le dossier public/ de symfony et un .htaccess génère grâce au pack Apache. et à la racine de public_html j'ai un autre . htaccess avec ce que j'ai déjà indiqué plus haut dedans.
Le problème viens sûrement des fichiers .htaccess mais je mis connais pas trop dans ce domaine. Et la doc de hostinger ne parle pas de symfony
Comme je l'ai dit, du moment que tu as accès au dossier au-dessus de public_html, c'est là qu'il serait mieux que soient les dossiers de ton projet plutôt que tous dans public_html. Et plus de dossier public, dont le contenu irait dans public_html, justement.
Voir cet autre message et y remplacer www par public_html pour la compréhension.
J'ai essayé ce que tu ma dis et ca me retourne cette erreur :
An exception has been thrown during the rendering of a template ("Asset manifest file "/home/user/domains/monsite.com/public/build/manifest.json" does not exist. Did you forget to build the assets with npm or yarn?").
Edit 1 :
Normal j'ai webpack encore et lui cherche public au lieu de public_html du coup il faut allez dans config/packages/webpack_encore.yaml et renommé ce qui doit l'être.
La page d'accueil s'affiche correctement mais quand je vais sur les autres pages j'ai une autre erreur :
Warning: include(/home/user/domains/monside.com/vendor/composer/../doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php): Failed to open stream: No such file or directory
Il ne faut pas juste modifier composer.json pour changer ça, il faut aussi changer le nom du dossier en local puis re-publier les assets pour les pousser (ou alors le faire directement sur le serveur).
A noter que le cache, par contre, on ne doit pas le pousser sur le serveur. Eventuellement les dossiers var/cache, mais en tout cas pas leur contenu.
J'ai rien modifié dans composer.json mais du coup je dois rechargé mon dossier composer en local et envoyé le dossier vendor sur le serveur ? De quelle dossier tu parle quand tu dis "il faut aussi changer le nom du dossier en local" ?
Je pense qu'il y a un problème au niveau des informations que ta rentré pour la base de données. Vérifie qu'ils sont identiques. Et sinon ta fait comment pour installer ton projet ? Parce que moi j'ai toujours une erreur. Et tes sur quelle version de Symfony ?
D'accord merci pour ton aide et du coup je dois pas utilisé l'extension apache qui génère le .htaccess ? Je copie simplement mon code comme ta dis et j'ajoute à la racine le .htaccess que tu ma donné ?
Si j'utilise la commande git clone git@github.com:user/monsite.gite ca va génèré le dossier monsite, c'est pas grave pour le .htaccess ?
@Dchris5 j'ai installée en local symfony ful et puis je les exporter avec FTP et la base je l'importer directement dans la base de donner du serveur comme un projet PHP normal. je suis débutant en symfony.
Si tu utilise git clone tu dois specifier le nom du projet par défaut ça prend le nom monsite mais tu ajout un point (.) à la fin pour que ça ne génère pas le dossier mon site. (git clone git@github.com:user/monsite.git .) n'oublie pas le point à la fin.
Making functional apps for digital products @NEOTIC
D'accord je vais essayer tout ça après et je reviens dire quoi merci !
Edit :
Impeccable ça fonction en FTP mais en ssh j'ai eu une erreur, ça je regarderais par moi-même déjà la principale c'est que je peux test mon site merci à vous tous pour votre aide, j'espère que ce sujet en aidera d'autres qui sont aussi chez Hostinger.
Ce n'est vraiment pas le plus sûr que de mettre tout le code dans le dossier public_html, parce qu'à moins de restreindre les accès, les fichiers qui ne devraient pas être disponibles directement (contrôleurs, entités, mais surtout configuration) risquent d'être accessibles…
Et si on veut fournir des fichiers à télécharger avec une extension spécifique, PDF à tout hasard, on doit l'ajouter dans le .htaccess pour éviter la redirection, non ?
Ce n'est vraiment pas le plus sûr que de mettre tout le code dans le dossier public_html, parce qu'à moins de restreindre les accès, les fichiers qui ne devraient pas être disponibles directement (contrôleurs, entités, mais surtout configuration) risquent d'être accessibles…
Je déterre un vieux sujet mais ayant rencontré le même soucis, j'ai posé la question à Hostinger et voici leur réponse :
Pour déployer une application Symfony sur Hostinger, il est courant de placer le code source en dehors du répertoire public_html pour des raisons de sécurité. Vous pouvez laisser votre code source en dehors de public_html et déplacer uniquement le contenu du répertoire public de Symfony dans public_html. Ensuite, vous devrez faire les modifications requises du côté de Symfony pour lui indiquer la nouvelle structure des fichiers. Cela garantit que votre application fonctionne correctement tout en maintenant une bonne sécurité.
Du coup ca règle la question. Il suffit donc de modifier la config symfony pour lui indiquer que le répertoire public est désormais public_html
J'ai plusieurs sites Symfony sur Hostinger et j'ai mis tous les fichiers dans public_html (comme on le fait d'habitude) puis j'ai installé symfony/apache-pack(son recipe va créer/modifier le fichier .htaccess). Normalement c'est suffisant...
Making functional apps for digital products @NEOTIC
-
Making functional apps for digital products @NEOTIC
-
Making functional apps for digital products @NEOTIC
-
Making functional apps for digital products @NEOTIC
-