par
KeRR_@ » sam. 24 mars 2018 15:40
Salut,
Ici sur ce site
remplacer la fonction eregi
Sur ta ligne qui est :
Code : Tout sélectionnerif (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1];$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]);
qui va être remplacer comme ceci si tu l'as déjà testé :
Code : Tout sélectionnerif (preg_match('/([^\\\/]+)$/',$script_file,$reg)) $script_file=$reg[1];
$path=preg_replace($script_file,'',$_SERVER["PHP_SELF"]);
Je ne sais pas si cela va t'aider à trouvé mais il faut chercher car même si tu remplace " eregi "
et l'erreur persite alors c'est plus haut dans le code.
et donc tenter d'afficher les erreurs sous PHP ->
https://openclassrooms.com/courses/conc ... es-erreurs
Sur cette page "
Affichage des erreurs PHP "
Un ligne de code qui permet l'Import
synchronisation automatique dans ce
paragraphe sous une seule ligne.
Salut,
Ici sur ce site [url=https://stackoverflow.com/questions/1374881/how-to-change-phps-eregi-to-preg-match]remplacer la fonction eregi[/url]
Sur ta ligne qui est :
[code]if (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1];$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]);[/code]
qui va être remplacer comme ceci si tu l'as déjà testé :
[code]if (preg_match('/([^\\\/]+)$/',$script_file,$reg)) $script_file=$reg[1];
$path=preg_replace($script_file,'',$_SERVER["PHP_SELF"]);[/code]
Je ne sais pas si cela va t'aider à trouvé mais il faut chercher car même si tu remplace " eregi "
et l'erreur persite alors c'est plus haut dans le code.
et donc tenter d'afficher les erreurs sous PHP -> https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/configurer-php-pour-visualiser-les-erreurs
Sur cette page " [url=https://www1.zonewebmaster.eu/tutoriel-php-mysql:php:affichage-erreurs-php]Affichage des erreurs PHP[/url] "
Un ligne de code qui permet l'Import [url=https://www.supinfo.com/articles/single/2160-differences-php-5-php-7]synchronisation automatique[/url] dans ce [url=https://www.supinfo.com/articles/single/2160-differences-php-5-php-7#idm45643883243312]paragraphe[/url] sous une seule ligne.
par
stef83 » sam. 24 mars 2018 11:03
Et cette gestion commerciale hébergée est donc synchronisée sur 2 sites ecommerces. Aucune erreur sur ces 2 sites non plus.
En manuel les imports des commandes/fiches clients dans la gestion commerciale se fait sans problème/ C'est vraiment lié à l'import/synchronisation automatique et des dépréciation entre PHP5 et PHP7 et j'ai omis de dire que nous utilisions PHP-FPM
Et cette gestion commerciale hébergée est donc synchronisée sur 2 sites ecommerces. Aucune erreur sur ces 2 sites non plus.
En manuel les imports des commandes/fiches clients dans la gestion commerciale se fait sans problème/ C'est vraiment lié à l'import/synchronisation automatique et des dépréciation entre PHP5 et PHP7 et j'ai omis de dire que nous utilisions PHP-FPM
par
stef83 » sam. 24 mars 2018 10:55
Aucune erreur en front. il ne s'agit pas d'un site (vitrine ou ecommerce) mais d'une gestion commerciale.
Il n'y a aucune erreur qui apparait sur les pages. C'est en fouillant que j'ai trouvé ces erreurs dans le log qui n'existaient pas avant.
Aucune erreur en front. il ne s'agit pas d'un site (vitrine ou ecommerce) mais d'une gestion commerciale.
Il n'y a aucune erreur qui apparait sur les pages. C'est en fouillant que j'ai trouvé ces erreurs dans le log qui n'existaient pas avant.
par
KeRR_@ » sam. 24 mars 2018 10:50
On va aller par étape stp,
Pour l'instant on va trouver l'erreur qui s'affiche sur ta page de TON site est il accessible ?
Si oui, quel erreur t'affiche php sur quel page
On va aller par étape stp,
Pour l'instant on va trouver l'erreur qui s'affiche sur ta page de TON site est il accessible ?
Si oui, quel erreur t'affiche php sur quel page
par
stef83 » sam. 24 mars 2018 10:41
Bonjour et merci pour votre réponse. Oui je manque de précision.
Voilà là le script complet originel qui semble ne plus être compatible avec PHP 7. Il s'agit d'une fonction d'automatisation d'import de commandes par tâches CRON. En import manuel l'import fonctionne parfaitement. Les erreurs que j'ai sur le log sont toutes liées à ce script (ce que je n'avais pas en PHP 5.
Code : Tout sélectionner<?PHP
// Test if batch mode
$sapi_type = php_sapi_name();
$script_file=__FILE__;
if (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1];
$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]);
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Erreur: Vous utilisez l'interpreteur PHP pour le mode CGI. Pour executer $script_file en ligne de commande, vous devez utiliser l'interpreteur PHP pour le mode CLI.\n";
exit;
}
// Include Dolibarr environment
if (strstr($path, '/amnestyinternational')) $incpath = '/home/amnestyinternational/dolibarr';
else $incpath = $path.'../../htdocs/';
require_once ($incpath."/master.inc.php");
// After this $db is a defined handler to database.
dol_include_once('/ecommerce/common_functions.php');
dol_include_once('/ecommerce/class/ecom_site.class.php');
dol_include_once('/ecommerce/class/ecom_order.class.php');
dol_include_once('/ecommerce/class/E_product.class.php');
dol_include_once('/ecommerce/class/E_order.class.php');
dol_include_once('/ecommerce/class/ecom_log.class.php');
dol_include_once('/product/class/product.class.php');
//includes
dol_include_once('/ecommerce/includes/orders.inc.php');
dol_include_once('/ecommerce/includes/products.inc.php');
dol_include_once('/ecommerce/includes/prospects.inc.php');
// Main
$version='$Revision: 1.1.4.5 $';
@set_time_limit(0);
$error=0;
// sinon la langue est forcé à en_US dans translate
$conflang = (version_compare(DOL_VERSION, '3.5') >= 0)?$conf->global->MAIN_INFO_SOCIETE_COUNTRY:$conf->global->MAIN_INFO_SOCIETE_PAYS;
$l = explode(":", $conflang);
$lc = strtolower($l[1]).'_'.$l[1];
$langs->setDefaultLang($lc);
$langs->load("main");
$langs->load("ecommerce@ecommerce");
$user->fetch('',ECOM_BATCH_USER, '');
//Chargement des droits
print "user ".ECOM_BATCH_USER." langue ".$lc."\n";
//Chargement des droits
$user->getrights('');
// -------------------- START OF YOUR CODE HERE --------------------
// Check parameters
if (! isset($argv[1])) {
print "Usage: $script_file order/product/prospect siteid ...\n";
return -1;
}
if ($argv[1] != 'ecomstock' && ! isset($argv[2]) ) {
print "il faut spécifier le siteid\n";
return -1;
}
$siteid=$argv[2];
// lecture du site
if ($siteid)
{
// get site_parameters
$site_params = new Ecom_site($db);
if ($site_params->fetch($siteid) < 0)
{
print "erreur lecture site ".$site_params->error;
return -2;
}
}
switch ($action = $argv[1])
{
case 'order':
print "traitement des commandes\n";
if ($res = get_orders($siteid, $db, $user) > 0) print "traitement des commandes réussi $res\n";
else print "Erreur traitement des commandes \n";
$res = import_orders($siteid, $db, $user);
if ($res < 0) print "Erreur import des commandes"."\n";
elseif ($res == 0) print "aucune commande à traiter"."\n";
else print $res." commandes importées"."\n";
break;
case 'product':
print "traitement des produits"."\n";
print "étape 1 liste des nouveaux produits"."\n";
// traitement de la limite
if (! isset($argv[3])) $limit = 0;
elseif ($argv[3] > 0 ) $limit = $argv[3];
else $limit = 100; // on limite
// pour ne pas re-traiter les produits en erreur
$sql = "SELECT max(ecom_product) last FROM ".MAIN_DB_PREFIX."ecom_product ep ";
$sql .= "WHERE ep.siteid = '".$siteid."' ";
dol_syslog("products.inc.php::get_new_products $sql", LOG_DEBUG);
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
if ($obj)
$last = $obj->last;
else
{
dol_syslog("products.inc.php::get_new_products rien � faire", LOG_DEBUG);
$last = 0;
}
}
else
{
dol_syslog("products.inc.php::get_new_products erreur ".$sql, LOG_DEBUG);
return -1;
}
// 1. recherche des nouveaux porduits
if ($res = get_new_products($siteid,$db, $user, $limit) < 0) print "Erreur traitement des produits étape 1"."\n";
else print "fin étape 1 début étape 2"."\n";
// on fait les deux traitements syst�matiquement
if ($res = get_products($siteid, $db, $user, $limit, $last)) print "traitement produit réussi $last $limit"." \n";
else print "Erreur traitement des produits $last $limit"."\n";
break;
case 'prospect':
print "traitement des prospects\n";
// traitement de la limite
if (! isset($argv[3])) $limit = 0;
elseif ($argv[3] > 0 ) $limit = $argv[3];
else $limit = 100; // on limite
// pour ne pas re-traiter les prospects
$sql = "SELECT max(ecom_customer) last FROM ".MAIN_DB_PREFIX."ecom_customer ec ";
$sql .= "WHERE ec.siteid = '".$siteid."' AND ec.site_cust_status = 'P'";
dol_syslog("ws_import.inc.php::import_prospects $sql", LOG_DEBUG);
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
if ($obj)
$last = $obj->last;
else
{
dol_syslog("ws_import::aucun nouveau propect", LOG_DEBUG);
$last = 0;
}
}
else
{
dol_syslog("ws_import::import prospects erreur ".$sql, LOG_ERR);
return -1;
}
if ($res = get_new_prospects($siteid,$db, $user, $limit) < 0) print "Erreur traitement des prospects étape 1"."\n";
else print "fin étape 1 début étape 2"."\n";
// on fait les deux traitements systématiquement
if ($res = import_prospects($siteid, $db, $user, $limit, $last)) print "traitement des prospects réussi $last $limit"." \n";
else print "Erreur traitement des prospects $last $limit"."\n";
break;
case 'ecomstock':
print "maj qte en vente sur tous les sites \n";
send_stock_update($db, $user);
break;
case 'init_site' :
// initialiser les paramètres du site
ecom_init_param($siteid, 'batch');
break;
default :
print "commande inconnue : ".$argv[1]."\n";
$error = -1;
}
// -------------------- END OF YOUR CODE --------------------
return $error;
?>
Et ici les erreurs sur le fichier log si je garde le script originel :
Code : Tout sélectionner[22-Mar-2018 22:30:05 Europe/Paris] PHP Fatal error: Uncaught Error: Call to undefined function eregi() in /home/xxxxxxxx/public_html/scripts/ecommerce/ws_import.php:32
Stack trace:
#0 {main}
Bonjour et merci pour votre réponse. Oui je manque de précision.
Voilà là le script complet originel qui semble ne plus être compatible avec PHP 7. Il s'agit d'une fonction d'automatisation d'import de commandes par tâches CRON. En import manuel l'import fonctionne parfaitement. Les erreurs que j'ai sur le log sont toutes liées à ce script (ce que je n'avais pas en PHP 5.
[code]<?PHP
// Test if batch mode
$sapi_type = php_sapi_name();
$script_file=__FILE__;
if (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1];
$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]);
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Erreur: Vous utilisez l'interpreteur PHP pour le mode CGI. Pour executer $script_file en ligne de commande, vous devez utiliser l'interpreteur PHP pour le mode CLI.\n";
exit;
}
// Include Dolibarr environment
if (strstr($path, '/amnestyinternational')) $incpath = '/home/amnestyinternational/dolibarr';
else $incpath = $path.'../../htdocs/';
require_once ($incpath."/master.inc.php");
// After this $db is a defined handler to database.
dol_include_once('/ecommerce/common_functions.php');
dol_include_once('/ecommerce/class/ecom_site.class.php');
dol_include_once('/ecommerce/class/ecom_order.class.php');
dol_include_once('/ecommerce/class/E_product.class.php');
dol_include_once('/ecommerce/class/E_order.class.php');
dol_include_once('/ecommerce/class/ecom_log.class.php');
dol_include_once('/product/class/product.class.php');
//includes
dol_include_once('/ecommerce/includes/orders.inc.php');
dol_include_once('/ecommerce/includes/products.inc.php');
dol_include_once('/ecommerce/includes/prospects.inc.php');
// Main
$version='$Revision: 1.1.4.5 $';
@set_time_limit(0);
$error=0;
// sinon la langue est forcé à en_US dans translate
$conflang = (version_compare(DOL_VERSION, '3.5') >= 0)?$conf->global->MAIN_INFO_SOCIETE_COUNTRY:$conf->global->MAIN_INFO_SOCIETE_PAYS;
$l = explode(":", $conflang);
$lc = strtolower($l[1]).'_'.$l[1];
$langs->setDefaultLang($lc);
$langs->load("main");
$langs->load("ecommerce@ecommerce");
$user->fetch('',ECOM_BATCH_USER, '');
//Chargement des droits
print "user ".ECOM_BATCH_USER." langue ".$lc."\n";
//Chargement des droits
$user->getrights('');
// -------------------- START OF YOUR CODE HERE --------------------
// Check parameters
if (! isset($argv[1])) {
print "Usage: $script_file order/product/prospect siteid ...\n";
return -1;
}
if ($argv[1] != 'ecomstock' && ! isset($argv[2]) ) {
print "il faut spécifier le siteid\n";
return -1;
}
$siteid=$argv[2];
// lecture du site
if ($siteid)
{
// get site_parameters
$site_params = new Ecom_site($db);
if ($site_params->fetch($siteid) < 0)
{
print "erreur lecture site ".$site_params->error;
return -2;
}
}
switch ($action = $argv[1])
{
case 'order':
print "traitement des commandes\n";
if ($res = get_orders($siteid, $db, $user) > 0) print "traitement des commandes réussi $res\n";
else print "Erreur traitement des commandes \n";
$res = import_orders($siteid, $db, $user);
if ($res < 0) print "Erreur import des commandes"."\n";
elseif ($res == 0) print "aucune commande à traiter"."\n";
else print $res." commandes importées"."\n";
break;
case 'product':
print "traitement des produits"."\n";
print "étape 1 liste des nouveaux produits"."\n";
// traitement de la limite
if (! isset($argv[3])) $limit = 0;
elseif ($argv[3] > 0 ) $limit = $argv[3];
else $limit = 100; // on limite
// pour ne pas re-traiter les produits en erreur
$sql = "SELECT max(ecom_product) last FROM ".MAIN_DB_PREFIX."ecom_product ep ";
$sql .= "WHERE ep.siteid = '".$siteid."' ";
dol_syslog("products.inc.php::get_new_products $sql", LOG_DEBUG);
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
if ($obj)
$last = $obj->last;
else
{
dol_syslog("products.inc.php::get_new_products rien � faire", LOG_DEBUG);
$last = 0;
}
}
else
{
dol_syslog("products.inc.php::get_new_products erreur ".$sql, LOG_DEBUG);
return -1;
}
// 1. recherche des nouveaux porduits
if ($res = get_new_products($siteid,$db, $user, $limit) < 0) print "Erreur traitement des produits étape 1"."\n";
else print "fin étape 1 début étape 2"."\n";
// on fait les deux traitements syst�matiquement
if ($res = get_products($siteid, $db, $user, $limit, $last)) print "traitement produit réussi $last $limit"." \n";
else print "Erreur traitement des produits $last $limit"."\n";
break;
case 'prospect':
print "traitement des prospects\n";
// traitement de la limite
if (! isset($argv[3])) $limit = 0;
elseif ($argv[3] > 0 ) $limit = $argv[3];
else $limit = 100; // on limite
// pour ne pas re-traiter les prospects
$sql = "SELECT max(ecom_customer) last FROM ".MAIN_DB_PREFIX."ecom_customer ec ";
$sql .= "WHERE ec.siteid = '".$siteid."' AND ec.site_cust_status = 'P'";
dol_syslog("ws_import.inc.php::import_prospects $sql", LOG_DEBUG);
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
if ($obj)
$last = $obj->last;
else
{
dol_syslog("ws_import::aucun nouveau propect", LOG_DEBUG);
$last = 0;
}
}
else
{
dol_syslog("ws_import::import prospects erreur ".$sql, LOG_ERR);
return -1;
}
if ($res = get_new_prospects($siteid,$db, $user, $limit) < 0) print "Erreur traitement des prospects étape 1"."\n";
else print "fin étape 1 début étape 2"."\n";
// on fait les deux traitements systématiquement
if ($res = import_prospects($siteid, $db, $user, $limit, $last)) print "traitement des prospects réussi $last $limit"." \n";
else print "Erreur traitement des prospects $last $limit"."\n";
break;
case 'ecomstock':
print "maj qte en vente sur tous les sites \n";
send_stock_update($db, $user);
break;
case 'init_site' :
// initialiser les paramètres du site
ecom_init_param($siteid, 'batch');
break;
default :
print "commande inconnue : ".$argv[1]."\n";
$error = -1;
}
// -------------------- END OF YOUR CODE --------------------
return $error;
?>
[/code]
Et ici les erreurs sur le fichier log si je garde le script originel :
[code][22-Mar-2018 22:30:05 Europe/Paris] PHP Fatal error: Uncaught Error: Call to undefined function eregi() in /home/xxxxxxxx/public_html/scripts/ecommerce/ws_import.php:32
Stack trace:
#0 {main}[/code]
par
KeRR_@ » sam. 24 mars 2018 10:13
Bonjour,
Ce que je voudrais savoir, de quel erreur sur quel page ?
Bonjour,
Ce que je voudrais savoir, de quel erreur sur quel page ?
par
stef83 » ven. 23 mars 2018 20:33
Bonsoir, je ne suis pas développeur mais ecommerçant et je rencontre une galère sur un script PHP.
Si j'en crois ce que j'ai pu glaner comme information la fonction eregi est dépréciée depuis un moment hors le site vient de passer en PHP 7 et évidement des erreurs apparaissent et un import automatique ne fonctionne plus.
La fonction d'origine est :
Code : Tout sélectionnerif (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1];
$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]);
mais cela génère ces erreurs :
Code : Tout sélectionnerthrown in /home/web160gestiondol/public_html/scripts/ecommerce/ws_import.php on line 32
[23-Mar-2018 16:50:03 Europe/Paris] PHP Fatal error: Uncaught Error: Call to undefined function eregi() in /home/..........
Stack trace:
#0 {main}
Hors j'ai donc vu que cette fonction est à remplacer par preg_match, j'ai donc remplacé par :
Code : Tout sélectionnerif (preg_match('/([^\\\/]+)$/i',$script_file,$reg)) $script_file=$reg[1];
$path=preg_replace($script_file,'',$_SERVER["PHP_SELF"]);
Mais cela ne fonctionne toujours pas, et à mon sens c'est surement lié à un séparateur mal placé... Ou pas
Si une âme charitable pouvait m'aiguiller... d'avance merci.
Bonsoir, je ne suis pas développeur mais ecommerçant et je rencontre une galère sur un script PHP.
Si j'en crois ce que j'ai pu glaner comme information la fonction eregi est dépréciée depuis un moment hors le site vient de passer en PHP 7 et évidement des erreurs apparaissent et un import automatique ne fonctionne plus.
La fonction d'origine est :
[code]if (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1];
$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]);[/code]
mais cela génère ces erreurs :
[code]thrown in /home/web160gestiondol/public_html/scripts/ecommerce/ws_import.php on line 32
[23-Mar-2018 16:50:03 Europe/Paris] PHP Fatal error: Uncaught Error: Call to undefined function eregi() in /home/..........
Stack trace:
#0 {main}[/code]
Hors j'ai donc vu que cette fonction est à remplacer par preg_match, j'ai donc remplacé par :
[code]if (preg_match('/([^\\\/]+)$/i',$script_file,$reg)) $script_file=$reg[1];
$path=preg_replace($script_file,'',$_SERVER["PHP_SELF"]);[/code]
Mais cela ne fonctionne toujours pas, et à mon sens c'est surement lié à un séparateur mal placé... Ou pas :cry:
Si une âme charitable pouvait m'aiguiller... d'avance merci.