I have fixed most issues after the upgrade but one I just can't seem to
solve. I hope someone can help me. I created a few years ago this upload
form/functionality in the admin section to give the admin user the
possibility to upload images for a property in a region. The admin user
select the Region, then the Property then browse over his drive to select a
file, enter the image alt 'description' and then finally hit the Upload
Image button. This form worked perfect in cakephp version 2.3.9. But after
the upgrade it fails with "Internal Server error" in all Windows browsers,
it looks like it has a problem with the 'temp' file location of this file I
know they have changed so much in cakePHP i just wonder what setting/folder
is just for this temp filename when you submit the form...
I checked the /user/local/apache/domlogs, I checked the /var/log/messages.
I also checked in the /app/tmp/logs/ nothing... I have enabled the debug
option. nothing.. I have tried to put a die(); on several places, but I am
just puzzled, the form works as supposed I can't get anything faulty, but
as soon as I press the button Upload Image. the error comes with blank
screen and error: Internal Server error www.domain.com/admin/uploads.
View
<br> <div class="upload form"> <fieldset> <?php echo $this->Session->flash();
?> <legend><?php echo __('Admin - Upload Property Images'); ?></legend>
<br><hr><br> <?php echo $this->Form->create('Upload', array('type' => 'file'));
?> <?php echo $this->Form->input('region_id', array('label' => 'Select
Region:')); ?> <?php echo $this->Form->input('property_id', array('label' =>
'Select Property:')); ?> <?php echo $this->Form->file('file'); ?> <?php echo
$this->Form->input('description', array('label' => 'Image Alt = [Specify an
alternate text for the image]:')); ?> <br> </fieldset> <?php echo
$this->Form->submit(__('Upload Image', true)); ?> </div> <br>
Controller
<?php App::uses('AppController', 'Controller'); App::uses('Folder', 'Utility');
App::uses('File', 'Utility'); class UploadsController extends AppController {
public $helpers = array('Html', 'Form'); public $uses =
array('Region','Property','PropertyImage'); public function admin_index() {
$this->set('title_for_layout', 'Upload controller - '); // Retrieve the region
list $this->set('regions', $this->Region->find('list', array( 'fields' =>
array('Region.id', 'Region.regionname'), 'order' => 'regionname', ))); //
Retrieve the properties list $this->set('properties',
$this->Property->find('list', array( 'fields' => array('Property.id',
'Property.ref', 'Property.description'), 'order' => 'ref', ))); if
(isset($this->request->data['Upload']['region_id'])) { // Image selected? if
($this->request->data['Upload']['file']['name'] == '') {
$this->Session->setFlash('Please, select an image to upload.');
$this->redirect($this->referer()); } // All required data is collected. //
Prepare uploading file to the server and store in the db. // Check if folder
exist to store the Image in. $this->Region->recursive = 0; $propertyid =
($this->request->data['Upload']['property_id']); $property =
($this->Property->findById($propertyid)); $propertyref =
$property['Property']['ref']; $regionid =
($this->request->data['Upload']['region_id']); $regionname =
($this->Region->findById($regionid)); $cdest =
$regionname['Country']['countryname']; // Set Folder -> Country $rdest =
$regionname['Region']['regionname']; // Set Folder -> Regionname $destination =
(ROOT.DS.WEBROOT_DIR.DS.'img'.DS.$cdest.DS.$rdest.DS); //debug($destination);
//$destination = (App.imageBaseUrl.DS.$cdest.DS.$rdest.DS);
//debug($destination); // Folder exist? $folder = new Folder($destination);
$folderexist = $folder->cd($destination); // Returns False on failure. if
($folderexist == false ) { // Create new folder. $folder->create($destination);
} // Create the Filename. $tmp_name =
($this->request->data['Upload']['file']['tmp_name']); $filename =
($this->request->data['Upload']['file']['name']); $fileprefix = $propertyref;
// New filename. $filext = substr($filename, -4); // Keep file extension. //
Count the files in the destination folder. $dir = new Folder($destination); //
Destination folder. $files = $dir->find('$propertyref.*', true); // Creates
array with filenames. $counter = count($files); // Count the files. if
($counter == 0){ // No such files $counter = $counter + 1; // First image. }
$filemid = sprintf('%01d', $counter); // Add number to filename. $filename =
($fileprefix.$filemid.$filext); // Put the parts together. // Check if the file
exist. if (file_exists($destination.$filename)) { // Yes, we need to increase
the counter. while (file_exists($destination.$filename)) { $counter = $counter
+ 1; $filemid = sprintf('%01d', $counter); $filename =
($fileprefix.$filemid.$filext); //debug($filename); }} // Upload the file to
the server/folder. move_uploaded_file($tmp_name, $destination . $filename); //
Prepare for writing to the database. $filesize =
($this->request->data['Upload']['file']['size']); $createdt = date('Y-m-d
H:i:s'); $description = ($this->request->data['Upload']['description']); if
($description == '') { // Is the Tag/Description empty? $description =
$filename; // Yes, we use the filename. } // Create the Array with correct name
and fields for the DB. $this->request->data['PropertyImage']['filename'] =
$cdest.DS.$rdest.DS.$filename;
$this->request->data['PropertyImage']['filesize'] = $filesize;
$this->request->data['PropertyImage']['description'] = $description;
$this->request->data['PropertyImage']['createdt'] = $createdt;
$this->request->data['PropertyImage']['property_id'] = $propertyid; // Save to
the database. $this->PropertyImage->save($this->request->data);
$this->set('selectedRegionID', $this->request->data['Upload']['region_id']);
$this->set('selectedPropertyID',
$this->request->data['Upload']['property_id']); $this->Session->setFlash('Image
is uploaded and stored in the database.'); // Done. } else { $selectedRegionID
= false; $this->set('selectedRegionID', $selectedRegionID); } // Go back. } } ?>
Any help much appreciated.
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.