Aide - Recherche - Membres - Calendrier
Version complète : Fatal error: Cannot instantiate non-existent class: upload
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Installation de la boutique
WIK
Bonjour,

Voici donc le sympathique message qui s'affiche lorsque je clique sur "aperçu" dans la fiche de modification de mon produit :
CITATION
Fatal error: Cannot instantiate non-existent class: upload in /home/xxxxxx/www/admin/categories.php on line 260


Et voici la ligne de code (en rouge) dans "categories.php" (que je n'ai jamais modifié)
CITATION
case 'new_product_preview':
// copy image only if modified
$products_image = new upload('products_image');
$products_image->set_destination(DIR_FS_CATALOG_IMAGES . 'pochettes/');
if ($products_image->parse() && $products_image->save()) {
$products_image_name = $products_image->filename;
} else {
$products_image_name = (isset($HTTP_POST_VARS['products_previous_image']) ? $HTTP_POST_VARS['products_previous_image'] : '');
}
break;
}
}


Par ailleurs, "products_image" existe dans la bdd, le fichier "upload.php" existe...

Quelqu'un a-t-il une idée ?
J'ai farfouillé partout dans la FAQ, le forum... rien trouvé !

Merci d'avance
stayve
renvoie le fichier

admin/includes/classes/upload.php

sur ton serveur, il a du etre mal transferer ....
WIK
CITATION(stayve @ 26 Mar 2006, 10:40) [snapback]165855[/snapback]

renvoie le fichier
admin/includes/classes/upload.php
sur ton serveur, il a du etre mal transferer ....


j'ai tenté plusiquers fois de le ré-uploader en "binaire"
rien à faire
Gnidhal
et si tu faisais une recherche sur les forums avec "Cannot instantiate non-existent class", tu aurais peut-être des éléments de réponse...wink.gif
WIK
oui, j'ai effectivement passé 2 heures à chercher...
et rien ne correspond à mon pb avec l'upload, en général il est dit que la "class" est mal définie ou pas définie dans "general.php".
en l'occurence, le fichier qui me concerne c'est upload.php et la class est bien définie.

par ailleurs, le site était au préalable herbergé chez free, je ne pouvais pas uploader d'images à cause des chmod mais la prévisualisation au moins fonctionnait.
là chez ovh, je suis directement bloquée par mon message d'erreur.
Gnidhal
et as-tu essayé de re uploader categories.php, application_top.php...
bref tous les fichiers qui sont concernés...
car ton class upload n'est pas chargé, ça vient peut-être du includes() qui n'a pas suivi...
autre chose : avais-tu fait des modifs pour tourner sur Free ? si oui, il faudrait peut-être les enlever.
WIK
CITATION(Gnidhal @ 26 Mar 2006, 11:14) [snapback]165863[/snapback]

et as-tu essayé de re uploader categories.php, application_top.php...
bref tous les fichiers qui sont concernés...
car ton class upload n'est pas chargé, ça vient peut-être du includes() qui n'a pas suivi...
autre chose : avais-tu fait des modifs pour tourner sur Free ? si oui, il faudrait peut-être les enlever.

je viens de tout relancer une nouvelle fois en binaire.
sinon, j'ai fait l'install via le fichier d'install.

concernant free, non, je n'ai fait aucune modif concernant l'upload.
Je n'avais trouvé aucune info pour contourner le pb d'upload donc j'ai pris un hébergement payant...

voici le fichier "upload.php" :
CITATION
<?php
class upload {
var $file, $filename, $destination, $permissions, $extensions, $tmp_filename, $message_location;

function upload($file = '', $destination = '', $permissions = '777 / j'ai également testé en le laissant vide, sans changement', $extensions = '') {
$this->set_file($file);
$this->set_destination($destination);
$this->set_permissions($permissions);
$this->set_extensions($extensions);
$this->set_output_messages('direct');

if (tep_not_null($this->file) && tep_not_null($this->destination)) {
$this->set_output_messages('session');

if ( ($this->parse() == true) && ($this->save() == true) ) {
return true;
} else {
// self destruct
$this = null;
return false;
}
}
}

function parse() {
global $messageStack;

if (isset($_FILES[$this->file])) {
$file = array('name' => $_FILES[$this->file]['name'],
'type' => $_FILES[$this->file]['type'],
'size' => $_FILES[$this->file]['size'],
'tmp_name' => $_FILES[$this->file]['tmp_name']);
} elseif (isset($GLOBALS['HTTP_POST_FILES'][$this->file])) {
global $HTTP_POST_FILES;

$file = array('name' => $HTTP_POST_FILES[$this->file]['name'],
'type' => $HTTP_POST_FILES[$this->file]['type'],
'size' => $HTTP_POST_FILES[$this->file]['size'],
'tmp_name' => $HTTP_POST_FILES[$this->file]['tmp_name']);
} else {
$file = array('name' => (isset($GLOBALS[$this->file . '_name']) ? $GLOBALS[$this->file . '_name'] : ''),
'type' => (isset($GLOBALS[$this->file . '_type']) ? $GLOBALS[$this->file . '_type'] : ''),
'size' => (isset($GLOBALS[$this->file . '_size']) ? $GLOBALS[$this->file . '_size'] : ''),
'tmp_name' => (isset($GLOBALS[$this->file]) ? $GLOBALS[$this->file] : ''));
}

if ( tep_not_null($file['tmp_name']) && ($file['tmp_name'] != 'none') && is_uploaded_file($file['tmp_name']) ) {
if (sizeof($this->extensions) > 0) {
if (!in_array(strtolower(substr($file['name'], strrpos($file['name'], '.')+1)), $this->extensions)) {
if ($this->message_location == 'direct') {
$messageStack->add(ERROR_FILETYPE_NOT_ALLOWED, 'error');
} else {
$messageStack->add_session(ERROR_FILETYPE_NOT_ALLOWED, 'error');
}
return false;
}
}

$this->set_file($file);
$this->set_filename($file['name']);
$this->set_tmp_filename($file['tmp_name']);
return $this->check_destination();

} else {
if ($this->message_location == 'direct') {
$messageStack->add(WARNING_NO_FILE_UPLOADED, 'warning');
} else {
$messageStack->add_session(WARNING_NO_FILE_UPLOADED, 'warning');
}
return false;
}
}

function save() {
global $messageStack;

if (substr($this->destination, -1) != '/') $this->destination .= '/';

if (move_uploaded_file($this->file['tmp_name'], $this->destination . $this->filename)) {
chmod($this->destination . $this->filename, $this->permissions);

if ($this->message_location == 'direct') {
$messageStack->add(SUCCESS_FILE_SAVED_SUCCESSFULLY, 'success');
} else {
$messageStack->add_session(SUCCESS_FILE_SAVED_SUCCESSFULLY, 'success');
}
return true;

} else {
if ($this->message_location == 'direct') {
$messageStack->add(ERROR_FILE_NOT_SAVED, 'error');
} else {
$messageStack->add_session(ERROR_FILE_NOT_SAVED, 'error');
}
return false;
}
}

function set_file($file) {
$this->file = $file;
}

function set_destination($destination) {
$this->destination = $destination;
}

function set_permissions($permissions) {
$this->permissions = octdec($permissions);
}

function set_filename($filename) {
$this->filename = $filename;
}

function set_tmp_filename($filename) {
$this->tmp_filename = $filename;
}

function set_extensions($extensions) {
if (tep_not_null($extensions)) {
if (is_array($extensions)) {
$this->extensions = $extensions;
} else {
$this->extensions = array($extensions);
}
} else {
$this->extensions = array();
}
}

function check_destination() {
global $messageStack;

if (!is_writeable($this->destination)) {
if (is_dir($this->destination)) {
if ($this->message_location == 'direct') {
$messageStack->add(sprintf(ERROR_DESTINATION_NOT_WRITEABLE, $this->destination), 'error');
} else {
$messageStack->add_session(sprintf(ERROR_DESTINATION_NOT_WRITEABLE, $this->destination), 'error');
}
} else {
if ($this->message_location == 'direct') {
$messageStack->add(sprintf(ERROR_DESTINATION_DOES_NOT_EXIST, $this->destination), 'error');
} else {
$messageStack->add_session(sprintf(ERROR_DESTINATION_DOES_NOT_EXIST, $this->destination), 'error');
}
}
return false;
} else {
return true;
}
}

function set_output_messages($location) {
switch ($location) {
case 'session':
$this->message_location = 'session';
break;
case 'direct':
default:
$this->message_location = 'direct';
break;
}
}
}
?>
jadiip
Salut à tous,

Je remonte ce sujet parce que je viens d'installer ma boutique sur un hébergement ovh et j'ai le même problème. Impossible d'ajouter un produit ou de modifier les images des catégories.

Il me renvoie Fatal error: Cannot instantiate non-existent class: upload in /homez.406/districtj/www/catalog/rulers/categories.php on line 80
Gnidhal
vérifie qua la classe upload est bien chargé par admin/application_top.php ligne 188:
Code
// file uploading class
  require(DIR_WS_CLASSES . 'upload.php');
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.