Yep, $tmpdir is empty. That must mean none of the entire _getTmpDir method works in my environment, at least in the context of $adapter->getFileName(). Looking over the _getTmpDir method it, I find that...
if (empty($this->_tmpDir)) { // Attemp to detect by creating a temporary file $tempFile = tempnam(md5(uniqid(rand(), TRUE)), ''); if ($tempFile) { $tmpdir = realpath(dirname($tempFile)); unlink($tempFile); } else { require_once 'Zend/File/Transfer/Exception.php'; throw new Zend_File_Transfer_Exception('Could not determine temp directory'); } } it enters this conditional statement, yet seems to escape it without throwing that exception. so the tempfile check isn't working. not 100% sure what you guys are trying to do with this check, but whatever it is, it's not working on my server :) On Wed, Dec 17, 2008 at 4:53 PM, Thomas Weidner <thomas.weid...@gmx.at>wrote: > Cameron, > > to go further with debugging you can see that your exception is called in > the file Abstract on line 948. > Now simply output the destination directory on line 947 so you can see > which directory you set. > > Then check if the directory which is set there > * does exist > * has write access > > Do this checks within your application as your user can have other rights > than the webserver. > > I am sure you will see where the problem is. > > To note: > This is default debugging strategy... there is no magic ZF action or > knowledge necessary. :-) > > Greetings > Thomas Weidner, I18N Team Leader, Zend Framework > http://www.thomasweidner.com > > ----- Original Message ----- From: "Cameron" <themsel...@gmail.com> > To: "Thomas Weidner" <thomas.weid...@gmx.at> > Cc: "Zend Framework - General" <fw-general@lists.zend.com> > Sent: Wednesday, December 17, 2008 1:59 AM > > Subject: Re: [fw-general] Unusual bug introduced with 1.7.1 in Zend_File. > > > here's the full $e. >> >> http://pastebin.com/m5d442e15 >> >> the line in my code, line 83, that is definitely where it is calling >> $adapter->getFileName(). >> >> On Tue, Dec 16, 2008 at 7:01 PM, Thomas Weidner <thomas.weid...@gmx.at >> >wrote: >> >> Cameron, >>> >>> when you have unexpected exceptions somewhere in your code it's always >>> usefull to get the whole exception and not only the rethrown content. >>> >>> This would be really helpfull, not only for ZF but for every generic >>> problem where exceptions are thrown. >>> >>> Greetings >>> Thomas Weidner, I18N Team Leader, Zend Framework >>> http://www.thomasweidner.com >>> >>> ----- Original Message ----- From: "Cameron" <themsel...@gmail.com> >>> To: "Thomas Weidner" <thomas.weid...@gmx.at> >>> Cc: "Zend Framework - General" <fw-general@lists.zend.com> >>> Sent: Tuesday, December 16, 2008 10:47 AM >>> Subject: Re: [fw-general] Unusual bug introduced with 1.7.1 in Zend_File. >>> >>> >>> >>> Yeah ok, so that's all a bit messy/broken, but I've cleaned it up and >>> it's >>> >>>> still doing the same thing: >>>> >>>> here's the cleaned up code in a pastebin: >>>> >>>> http://pastebin.com/m5bab1a44 >>>> >>>> the output is: >>>> >>>> Array ( [0] => bbbThe given destination is no directory or does not >>>> exist >>>> ) >>>> >>>> To test and make sure, i reverted to 1.7.0, still works fine. >>>> >>>> >>>> On Tue, Dec 16, 2008 at 5:31 PM, Thomas Weidner <thomas.weid...@gmx.at >>>> >wrote: >>>> >>>> Hy Cameron, >>>> >>>>> >>>>> Why should the first catch, catch anything when there is a failure ? >>>>> According to manual, receive() returns a false on failure, not an >>>>> exception. >>>>> >>>>> Also you are calling getFileName in any case, regardless if the form is >>>>> valid or not. >>>>> >>>>> Greetings >>>>> Thomas Weidner, I18N Team Leader, Zend Framework >>>>> http://www.thomasweidner.com >>>>> >>>>> ----- Original Message ----- From: "Cameron" <themsel...@gmail.com> >>>>> To: "Zend Framework - General" <fw-general@lists.zend.com> >>>>> Sent: Tuesday, December 16, 2008 7:25 AM >>>>> Subject: [fw-general] Unusual bug introduced with 1.7.1 in Zend_File. >>>>> >>>>> >>>>> >>>>> if ($form->isValid($formData)) { >>>>> >>>>> //the form is valid, finish moving the file about >>>>>> >>>>>> $adapter = new Zend_File_Transfer_Adapter_Http(); >>>>>> if ($adapter->isValid() === false) { >>>>>> print_r($adapter->getMessages()); >>>>>> } >>>>>> >>>>>> try { >>>>>> $adapter->setDestination($path . >>>>>> "/$src_class/$foreign_id") >>>>>> ->receive(); >>>>>> } catch (Exception $e) { >>>>>> $errors[] = $e->getMessage(); >>>>>> } >>>>>> } >>>>>> >>>>>> if (!$errors) { >>>>>> //if there are no errors with things so far, add a db >>>>>> record. >>>>>> try { >>>>>> $this->_model->add(array('foreign_id' => $foreign_id, >>>>>> 'filename' => $adapter->getFileName(), 'src_class' => $src_class, >>>>>> 'type' >>>>>> => >>>>>> $formData['newform']['type'])); >>>>>> } >>>>>> catch (Exception $e) { >>>>>> $errors[] = $e->getMessage(); >>>>>> } >>>>>> } >>>>>> >>>>>> >>>>>> This works perfectly with 1.7.0, fails in 1.7.1 with a really odd >>>>>> problem >>>>>> - >>>>>> it doesn't fail until the SECOND catch Exception, and the error it >>>>>> returns >>>>>> is "The given destination is no directory or does not exist", which it >>>>>> most >>>>>> certainly does because the file is being uploaded and moved in to >>>>>> place >>>>>> just >>>>>> fine, nor can I see how the setDestinaton method is being called by >>>>>> the >>>>>> getFileName method? >>>>>> This is all a bit too weird for me, I'm not really sure what's going >>>>>> on. >>>>>> printing out variables as the setDestination method is being called >>>>>> shows >>>>>> a >>>>>> perfectly fine path, and the file is being written... there's just >>>>>> this >>>>>> exception being thrown at some point. If one of you Zend guys has a >>>>>> good >>>>>> place for me to start debugging this one from I'm more than happy to >>>>>> help. >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >