Yii Framework Forum: model diversi!?!?!? stesso codice ma != versione di php - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

model diversi!?!?!? stesso codice ma != versione di php Rate Topic: -----

#1 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 03 February 2011 - 10:33 AM

la sostanza è questa: ho realizzato questo sitino con yii e poi l'ho pubblicato. La differenza tra la mia macchina e quella online, è che da me c'è ubuntu 10.04 e li c'è la 6.06. Da me php 5.3.2 li php 5.1.2.

Ho fatto un var_dump($model); ed ottengo due risultati differenti tra il mio pc e quello in produzione. Il problema è saltato fuori quando non mi era possibile fare l'upload di immagini. Prima era un problema di GD, poi risolto. Andando a caccia del problema, ho visto che da me il nome dell'immagine viene salvato, ma online per ragioni che ignoro NO!

Ne consegue che se tento di fare l'upload di una immagine nel codice

Image_GD_Driver::process($image, $actions, $dir, $file, $render = FALSE)


la variabile $file è VUOTA! O meglio equivale ad Object#45 .. ... . il 45 l'ho messo a caso. Il concetto è che nel mio PC non mi da Object ma CUploadedFile. In sostanza, da qualche parte il model si dimentica di che cos'è!?! Dico bene?

In oltre vi posto quello che si vede dal mio portatile dopo aver modificato CActiveRecord::model() in questo modo:
(Ho solo aggiunto un vardump)
  public static function model($className=__CLASS__) {
    if (isset(self::$_models[$className])) {
      return self::$_models[$className];
    } else {
      $model = self::$_models[$className] = new $className(null);
      var_dump($model);
      $model->_md = new CActiveRecordMetaData($model);
      $model->attachBehaviors($model->behaviors());
      return $model;
    }
  }


object(Automobili)#20 (13) {
["immagine"]=> NULL 
["_md":"CActiveRecord":private]=> NULL 
["_new":"CActiveRecord":private]=> bool(false) 
["_attributes":"CActiveRecord":private]=> array(0) { } 
["_related":"CActiveRecord":private]=> array(0) { } 
["_c":"CActiveRecord":private]=> NULL 
["_pk":"CActiveRecord":private]=> NULL 
["_alias":"CActiveRecord":private]=> string(1) "t" 
["_errors":"CModel":private]=> array(0) { } 
["_validators":"CModel":private]=> NULL 
["_scenario":"CModel":private]=> string(0) "" 
["_e":"CComponent":private]=> NULL 
["_m":"CComponent":private]=> NULL }


e quello che si vede online:
object(Automobili)#19 (13) { 
["immagine"]=> NULL 
["_md:private"]=> NULL 
["_new:private"]=> bool(false) 
["_attributes:private"]=> array(0) { } 
["_related:private"]=> array(0) { } 
["_c:private"]=> NULL 
["_pk:private"]=> NULL 
["_alias:private"]=> string(1) "t" 
["_errors:private"]=> array(0) { } 
["_validators:private"]=> NULL 
["_scenario:private"]=> string(0) "" 
["_e:private"]=> NULL 
["_m:private"]=> NULL }

0

#2 User is offline   markux 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 106
  • Joined: 26-November 10
  • Location:Grosseto

Posted 04 February 2011 - 03:35 AM

ciao, ma hai provato in locale con php 5.1.2? potrebbe essere un problema in include.
Anche yii/framework l'hai incluso in modo corretto?

altro non mi viene in mente
0

#3 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 February 2011 - 04:10 AM

Ho copiato tutto il mio codice in produzione. Non ho differenze. Sia il framework che il sito sono presi pari pari da ciò che è nella mia macchina.

Ti spiego tutta la storia: questo sito ha un form per fare l'upload di immagini. Lo provo, funziona ... quindi sviluppo tutto il sito e lo metto in produzione. Poi scopro che viene generata un'eccezione perchè le librerie GD mancano. Installiamo anche quelle. Sono andato dentro al framework a fare diversi var_dump e scopro che ad un certo punto si perde il nome del file.

Al momento attuale, viene salvato un file vuoto "Object# 44" per si perde il riferimento al file. Oltretutto, viene generata un'eccezione non prevista.
0

#4 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 February 2011 - 04:18 AM

View Postmarkux, on 04 February 2011 - 03:35 AM, said:

ciao, ma hai provato in locale con php 5.1.2? potrebbe essere un problema in include.
Anche yii/framework l'hai incluso in modo corretto?

altro non mi viene in mente



Si: ho dimenticato di dirti che effettivamente stiamo creando un'altra macchine con le stesse configurazioni che sono in produzione.
0

#5 User is offline   rebus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 07-December 09
  • Location:Ancona

Posted 04 February 2011 - 04:28 AM

Ciao Sensoraio.

Hai controllato in remoto il file php.ini sia adeguatamente configurato ?

file_uploads = On

Controlla anche le seguenti variabili se puoi:

-max upload filesize
-max post data size
-memory limit
-upload_tmp_dir
1

#6 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 February 2011 - 05:39 AM

Purtroppo si =(. Temo che farò una cosa cattiva cattiva: bypasserò quel componente e farò il lavoro sporco a mano. Farò altre prove comunque e magari isolerò l'esempio e condividerò il codice con chi ne volesse analizzare i contenuti.

Essendo capitato solo a me credo sia colpa di qualche riga di codice avventata.
0

#7 User is offline   Maurizio Domba Cerin 

  • Yii - Yesss It Is !!!
  • Yii
  • Group: Yii Dev Team
  • Posts: 4,342
  • Joined: 12-October 09
  • Location:Croatia

Posted 04 February 2011 - 06:10 AM

Non credo che il problema sia nell model diverso che hai postato sopra... perche i valori sono gli stessi... solo la rapresentazione e diversa...

Deve eserci un altro motivo... dovresti analizare il codice che popola la $file...

Se serve... sono sepre a disposizione per fare un po di debug ;)
Find more about me.... btw. Do you know your WAN IP?
0

#8 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 February 2011 - 06:15 AM

Non sono ancora riuscito a fare debug =(. Non arrivo a configurare il mio Netbeans. Se mi dai una manina mdomba te ne sarei grato!
0

#9 User is offline   Maurizio Domba Cerin 

  • Yii - Yesss It Is !!!
  • Yii
  • Group: Yii Dev Team
  • Posts: 4,342
  • Joined: 12-October 09
  • Location:Croatia

Posted 04 February 2011 - 06:20 AM

Certamente...

Per poter fare debug dal NetBeans... si deve installare xdebug - http://www.xdebug.org/

Qui che un NetBeans wiki - http://wiki.netbeans...ConfigureXDebug

Se hai problemi... chiedi qui... :)
Find more about me.... btw. Do you know your WAN IP?
0

#10 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 February 2011 - 06:39 AM

Per intanto comunico la mia soluzione accrocchio:

  public function actionCreate() {
    $model = new Automobili;
    if (isset($_POST['Automobili'])) {
      $model->attributes = $_POST['Automobili'];
      if ($model->save()) {
        if ($model->immagine != "") {
          $model->immagine = CUploadedFile::getInstance($model, 'immagine');
          $model->immagine->saveAs(Yii::app()->basePath . "/../images/" . ($_FILES["Automobili"]["name"]["immagine"]));
          $image = Yii::app()->image->load(Yii::app()->basePath . "/../images/" . ($_FILES["Automobili"]["name"]["immagine"]));
          $image->resize(179, 179);
          $image->save();
        }
        $model->immagine = @$_FILES["Automobili"]["name"]["immagine"];
        $model->save();
        $this->redirect(array('view', 'id' => $model->id));
      }
    }
    $this->render('create', array(
        'model' => $model,
    ));
  }

  public function actionUpdate($id) {
    $model = $this->loadModel($id);
    if (isset($_POST['Automobili'])) {
      if (CUploadedFile::getInstance($model, 'immagine') != "") {
        $model->immagine = CUploadedFile::getInstance($model, 'immagine');
        $model->immagine->saveAs(Yii::app()->basePath . "/../images/" . (@$_FILES["Automobili"]["name"]["immagine"]));
        $image = Yii::app()->image->load(Yii::app()->basePath . "/../images/" . (@$_FILES["Automobili"]["name"]["immagine"]));
        $image->resize(179, 179);
        $image->save();
      }
      if ($model->save()) {
        $model->immagine = @$_FILES["Automobili"]["name"]["immagine"];
        $model->save();
        $this->redirect(array('view', 'id' => $model->id));
      }
    }
    $this->render('update', array(
        'model' => $model,
    ));
  }


Come vedete, il componente salva correttamente ma, per ragioni che non so spiegarmi ... perde il nome dell'immagine. La mia soluzione è che, dopo l'insert e l'update, sovrascrivo il valore di $model->immagine con @$_FILES["Automobili"]["name"]["immagine"]. (scusate il silent ... si poteva fare di meglio ma sto problema mi ha fatto andare via di testa).
0

#11 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 February 2011 - 06:43 AM

Lo so sono un maiale. Ma ai maiali che risolvono i problemi bisogna volergli bene dai =).
0

#12 User is offline   Maurizio Domba Cerin 

  • Yii - Yesss It Is !!!
  • Yii
  • Group: Yii Dev Team
  • Posts: 4,342
  • Joined: 12-October 09
  • Location:Croatia

Posted 04 February 2011 - 07:10 AM

Io uso sempre una variabile temporanea per esempio

$img=CUploadedFile::getInstance(...)


e poi

$model->imagine=$img->name;

Find more about me.... btw. Do you know your WAN IP?
1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users