benoit*
-
Compteur de contenus
10 -
Inscrit(e) le
-
Dernière visite
Messages postés par benoit*
-
-
Bonjour,
Si j'ai bien compris:
Dans mon cas, la crontab du serveur demande au serveur (pas le serveur web, mais le serveur tout court) d'envoyer un mail. Et ca c'est désactivé.
Sur les serveurs mutualisés d'ovh, seul le serveur web (apache) a le droit d'envoyer un mail. Le serveur tout court n'a pas le droit.
Dans le deuxième cas ( script pl, cgi ou php ), un internaute affiche une page web sur son navigateur. Ce navigateur se connecte au serveur web (apache). Ce serveur web execute le script php ou perl. Ce script demande au serveur web d'envoyer un mail. et ca marche.
Je n'ai pas l'impression que PHP pourrait résoudre mon problème car php doit être executé via apache...
Qu'en penses-tu ?
-
merci, tu pourrais m'en dire un peu plus
afin que je recherche un début de solution à soumettre à l'Admin ?
-
Bonjour,
j'espère poster dans le bon forum...
Je cherche à comprendre un problème rencontré par mon entourage, peut-être pourriez-vous m'éclairer ?
Lors d'un changement d'hébergeur mutualisé X vers OVH Mutualisés,
une fonctionnalité du site n'est plus autorisée par OVH:
Initialement, le site utilisait un script CGI en C
qui comportait un crontab ( action automatique) pour détecter une alerte enregistrée ( anniversaire) et envoyer un email automatique au destinataire enregistré, pour lui souhaiter son anniversaire... simple à priori
Mais je comprend que cette fonction ne fonctionnera plus au regard des limitations d'OVH mutualisés car:
-> OVH ne permet pas à des CGI d'envoyer des mails "via une socket ni spécifier de serveur smtp ou de port d'envoi."
Si vous comprenez le problème comme je le décris ( je ne suis pas technicien ) - Pensez-vous qu'il existe une alternative technique pour le contourner ( à part un hébergement dédié, bien entendu...) ?
Merci pour vos précisions
Cordialement
-
Qu'est ce que tu entends par "échec" ?
Tu as une erreur 500 ?
Ou alors ça ne donne pas le résultat escompté ?
Quand on a un pb on faut découper pour le cerner, donc là il faut savoir si ça vient de l'UR ou de ton PHP.
Pour cela, fait une simple PHP qui récupère le path et qui l'affiche.
Comme cela tu sauras si ton UR est bon ou pas.
Ton script ne m'a pas l'air bien sécurisé.
Un 'include ($variable)', c'est *le* truc à éviter (ou alors il faut avoir une liste des urls autorisées à être "includées").
Bonjour à tous,
bonjour Remi: merci pour ton aide,
oui, une erreur 500
? impossible je ne comprend pas ce que tu dis ( niveau 0 en dev )...Pour cela, fait une simple PHP qui récupère le path et qui l'affiche.Comme cela tu sauras si ton UR est bon ou pas.
En fait, j'utilise un script réalisé par un ancien Webmaster sans comprendre ou modifier celui-ciTon script ne m'a pas l'air bien sécurisé.Mais je suis TRES interessé par ce que tu dis et par une alternative éventuelle
Cordialement
-
Rémi,
je publie le contenu du fichier.php car il pourrait permettre de résoudre mon problème
<?php
define("NOM_COOKIE","biscuit");
define("URL_PORTAIL","http://www.portail.com");
/* *************************************** */
// Ici il faut vérifier que l'utilisateur est logué
if ($_COOKIE[NOM_COOKIE] == "")
{ // et sinon (cookie vide) rediriger vers le formulaire.
header("Location: " . URL_PORTAIL);
die();
}
// on vérifie que le chemin demandé existe (sinon on est redirigé vers une 404)
$chemin = try_filepath($_GET['path']);
// Vérifier qu'on n'essaye pas de télécharger le script PHP lui-même
if ( ($_GET['path'] == "") || (realpath($chemin) == $_SERVER['SCRIPT_FILENAME'])
|| (strpos($_GET['path'],"..") !== false) // ni un fichier au dessus
|| ($_GET['path']{0} == '/') // ni un chemin absolu
|| ($_GET['path']{0} == '.') // ni un fichier invisible comme .htaccess
)
{ // Empêche une faille de sécurité
header("HTTP/1.0 403 Forbidden");
die("Bien essayé !Nice Try ! essaie encore... :-( one more time ?");
}
if ($chemin === false)
{ // Aucun essai de chemin n'a fonctionné, donc on génère une erreur 404
header("HTTP/1.0 404 Not Found");
$page404 = <<<EOF
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /{$_GET['path']} was not found on this server.<P>
</BODY></HTML>
EOF;
die($page404);
}
/* ** Si on en arrive là, il ne nous reste plus qu'à afficher la page ** */
// envoyer le type MIME du fichier au navigateur
header("Content-Type: " . mime_content_type($chemin));
// puis lui balancer direct le fichier demandé
if (getimagesize($chemin) === false)
include($chemin); // ce n'est pas une image, essayer d'interpréter la page
else
readfile($chemin); // c'est une image, l'envoyer directement en brut.
/* *************************************** */
/**
* Cette fonction essaye les diverses variantes de casse
* (majuscules/minuscules) sur le chemin d'accès
*
* _AT_param string $chemin Chemin du fichier à récupérer.
* _AT_return string|bool Le chemin avec la casse qui fonctionne
* ou false si aucun n'a été trouvé.
*/
function try_filepath($chemin)
{
if (file_exists($chemin)) // test tel quel
return $chemin;
$chemin = strtolower($chemin);
if (file_exists($chemin)) // test tout en minuscules
return $chemin; // min.min
$chemin = strtoupper($chemin);
if (file_exists($chemin)) // test tout en majuscules
return $chemin; // MAJ.MAJ
$dir = dirname($chemin) . "/";
$ext = substr( $chemin , strrpos($chemin,".") );
$base = basename($chemin,$ext);
$chemin = $dir.strtolower($base).strtoupper($ext);
if (file_exists($chemin)) // test nom en min et extension en MAJ
return $chemin; // min.MAJ
$chemin = $dir.strtoupper($base).strtolower($ext);
if (file_exists($chemin)) // test nom en MAJ et extension en min
return $chemin; // MAJ.min
// Bon là on n'a tout testé, y'a plus rien à faire.
return false;
}
?> -
Ni l'un, ni l'autre...
(le premier est le chemin depuis la racine du serveur alors que le second est une url fantaisiste...)
Il faut le chemin depuis la racine du domaine, donc:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/fichier\.php$
RewriteRule ^(.*)$ /dossier/fichier.php?path=$1 [QSA,L,NS]bonsoir,
Hélas... malgré tes indications et un copier coller: echec
disons que je ne maîtrise rein du tout et je partais du principe que le code .htaccess initial fonctionne chez l'autre hébergeurDe toutes façon ^(.*) ne sert strictement à rien dans une ligne condition... tu peux toutefois le laisser si tu trouves que cela fait plus joli.je récapitule:
J'ai le fichier.php et le .htaccess dans un dossier
Ce dossier est placé à la racine du site
je colle le code dans le .htaccess
j'ai fait un test simple de rewriting poure m'assurer que l'hébergement acceptait les redirections
je suis un peu dans le brouillard
As-tu une idée ?
-
La seule particularité chez OVH, c'est que le second paramètre des rewriterule doit être renseigné en 'base relative', c'est à dire avec le chemin complet depuis la racine du domaine et donc commencer par un slash
Pour ton cas, je ferais :
RewriteEngine on
RewriteCond %{REQUEST_URI} !fichier.php$
RewriteRule ^(.*)$ /fichier.php?path=$1 [QSA,L,NS](si ton fichier.php est bien à la racine du domaine, sinon il faut rajouter le chemin)
Bonsoir,
Merci pour ton info
le fichier php est dans le dossier ( /www/dossier/ ) avec le .htaccess
A ton avis, je dois rajouter home/login/www/dossier/ ou le http://www/site.com/dossier/ ?
je vois que tu as changé le code
!^(.*)/fichier.php$
en
!^(.*)!fichier.php$
?
tu peux m'indiquer pourquoi ?
le plus rageant, c'est que mon htaccess fonctionne dans son dossier sur un autre hébergeur
Il suffit que je doive simplement copier/coller le dossier vers OVH pour ne plus obtenir l'objectif...
Merci pour tes précisions
cordialement
-
Bonjour,
dans un /dossier/ je dispose d'uun script php (fichier.php) et d'un fichier .htaccess
Un urlrewiting dans le fichier .htaccess permet de protéger le dossier
chez mon hébergement principal cela fonctionne paafaitement:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !^(.*)/fichier.php$
RewriteRule ^(.*)$ fichier.php?path=$1 [QSA,L,NS]mais=>Je souhaite simplement dupliquer et déplacer le /dossier/ contenant le fichier.php et son .htaccess
sur un autre hébergement chez OVH ( 90 mutualisé)
Les régles d'urlrewiting sont différentes et spéciales chez cet hébergeur OVH
et je n'arrive pas à trouver la bonne formule pour retrouver mes fonctions...
j'ai essayé sans "Options +FollowSymlinks
", de mettre des slashs un peu partout, j'ai essayé aussi en rajouant /dossier/fichier.php sans succès...
L'un d'entre-vous, aimables lecteurs, pourrait-il m'aider ?
Cordialement
-
bonjour à tous,
<débutant>
mes liens ne respectent pas la casse de mes fichiers et pointent indifféremment vers monfichier.gif que vers MonFichier.GIF
( je sais, c'est mal)
je viens de tester l'exemple
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^nexistepas.html$ /mondossier/trouve.html [L]donné sur le site et cela fonctionne
Ainsi, j'aimerais réaliser une instruction permettant de ne pas tenir compte de la casse de mes fichier html, pdf et gif ( environ 200 cas ) ?
pourriez-vous m'aider dans ce sens ?
merci d'avance pour votre temps
très cordialement
OVH ne permet pas à des CGI d'envoyer des mails
dans Linux, freebsd
Posté
Bonjour,
je n'ai pas vraiment trouvé de réponse à mon problème,
Il est possible de mettre en place une crontab chez OVH
Il est possible d'utiliser les fonctions phpmail etc... de php
mais
Sur un serveur mutualisé OVH ( impossible d'utiliser le port smtp et soket)
est-il possible de réaliser une crontab php qui envoie un email au déclenchement d'une action enregistrée
sans l'intervention d'un navigateur client ?
Selon ce que je comprend: non...
Si vous aviez une piste pour me dépatouiller de là
Amicalement