CSV import plugin error: given destination is not writable

I have seen similar posts regarding this error, but not sure how to apply to my situation.

[I installed Omeka on my local machine to try it out using xampp]
When I click on the CSV import menu in my Omeka Admin, this is the error I am getting:

Zend_File_Transfer_Exception
The given destination is not writable
exception 'Zend_File_Transfer_Exception' with message 'The given destination is not writable' in /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/File/Transfer/Adapter/Abstract.php:1043
Stack trace:
#0 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Form/Element/File.php(512): Zend_File_Transfer_Adapter_Abstract->setDestination('/var/folders/z2...', 'csv_file')
#1 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Form/Element.php(382): Zend_Form_Element_File->setDestination('/var/folders/z2...')
#2 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Form/Element.php(260): Zend_Form_Element->setOptions(Array)
#3 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Form.php(1134): Zend_Form_Element->__construct('csv_file', Array)
#4 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Form.php(1043): Zend_Form->createElement('file', 'csv_file', Array)
#5 /Applications/XAMPP/xamppfiles/htdocs/omeka/plugins/CsvImport/forms/Main.php(296): Zend_Form->addElement('file', 'csv_file', Array)
#6 /Applications/XAMPP/xamppfiles/htdocs/omeka/plugins/CsvImport/forms/Main.php(34): CsvImport_Form_Main->_addFileElement()
#7 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Form.php(239): CsvImport_Form_Main->init()
#8 /Applications/XAMPP/xamppfiles/htdocs/omeka/plugins/CsvImport/controllers/IndexController.php(319): Zend_Form->__construct(Array)
#9 /Applications/XAMPP/xamppfiles/htdocs/omeka/plugins/CsvImport/controllers/IndexController.php(28): CsvImport_IndexController->_getMainForm()
#10 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Controller/Action.php(516): CsvImport_IndexController->indexAction()
#11 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('indexAction')
#12 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#13 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#14 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Application.php(382): Zend_Application_Bootstrap_Bootstrap->run()
#15 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/Application.php(79): Zend_Application->run()
#16 /Applications/XAMPP/xamppfiles/htdocs/omeka/admin/index.php(28): Omeka_Application->run()
#17 {main}

Is this a permissions issue?
Thanks!

Definitely looks like permissions. Maybe in where xampp stores temporary files, but if that's it I'd also expect problems with attaching a file to an item in general.

Any suggestions on how I can verify this? It looks like the temp folder in xampp has read/write permissions for "everyone" and "daemon".
Was also wondering what the ref to the Abstract.php doc in this file path indicates:
The given destination is not writable' in /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/File/Transfer/Adapter/Abstract.php:1043

Actually, I am having a host of issues as I try out some of the other functions: as you guessed, I did have problems attaching images to create an item; as well as switching themes (the theme does change but I get the same error message as posted above for all these instances).

That sounds like the permissions should be ok, if anyone can write to the temp directory. To double-check the directory that Omeka is looking for, you could turn on error logging and add something like this to CsvImport/controllers/IndexController.php, in the _getMainForm() function:

protected function _getMainForm()
    {
        require_once CSV_IMPORT_DIRECTORY . '/forms/Main.php';
        $csvConfig = $this->_getPluginConfig();
debug(print_r($csvConfig, true));
        $form = new CsvImport_Form_Main($csvConfig);
        return $form;
    }

That added debug line will tell you the configuration. It's a keyed array, where the one we're interested in is the fileDestination key. That's what the server needs to be able to write to.

To your question about the ref to the Abstract.php is all about, that goes back to the Zend Framework that Omeka is built from. Ultimately, the plugin is using its form building tools, which is what leads to the functions in that file. The part that starts in that direction is #5 in the trace you provided. When it tries to add the form element for the file, it goes through validation methods that end up in that Abstract.php file.

The important thing here is that the validation seems to be failing on confirming that the file destination is writable.

Problem with longish responses is that a new info might come in while I'm writing them!

Yep. The image attachment problem definitely makes it sound like the server can't write to that directory. I'm not familiar enough with xampp to know whether the server counts as being 'everyone'. It sounds weird that it might not be, but I've seen weirder server issues!

The theme changing issue seems a little different. Maybe still permissions, but on a different directory (files/theme_uploads maybe)

whoops. now I'm getting this when trying to connect to localhost/omeka:

Omeka Database Error
No such file or directory.
Confirm that the information in your db.ini file is correct.

Wondering if changing permissions on the temp folder in xampp did something
? (I undid what I did to see if it fixed things, but didn't)
I also cant connect to myPhP admin, giving me this error:

" MySQL said: Documentation
Cannot connect: invalid settings.
Connection for controluser as defined in your configuration failed.
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server."

Not sure what happened to cause this?

ugh. yeah, I'm just following the messages that make it seem like there was a change somehow in the db.ini file, either in the content or permissions on it. For this new one, that'd be the first place I'd look to make sure it is still readable, and the settings in it are correct.

Ok, i fixed the sql issue by resetting permissions on the /var folder in xampp files.
Still getting errors with the csv import plugin and adding items:

2015-07-13T21:03:15+02:00 ERR (3): exception 'Zend_File_Transfer_Exception' with message 'The given destination is not writable' in /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/File/Transfer/Adapter/Abstract.php:1043
Stack trace:
#0 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/File/Ingest/Upload.php(37): Zend_File_Transfer_Adapter_Abstract->setDestination('/var/folders/z2...')
#1 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/File/Ingest/Upload.php(136): Omeka_File_Ingest_Upload->_buildAdapter()
#2 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/models/Builder/Item.php(237): Omeka_File_Ingest_Upload->addValidator(Object(Omeka_Validate_File_Extension))
#3 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/models/Builder/Item.php(198): Builder_Item->_addIngestValidators(Object(Omeka_File_Ingest_Upload))
#4 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/globals.php(567): Builder_Item->addFiles('Upload', 'file', Array)
#5 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/models/Item.php(320): insert_files_for_item(Object(Item), 'Upload', 'file', Array)
#6 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/models/Item.php(230): Item->_uploadFiles()
#7 [internal function]: Item->beforeSave(Array)
#8 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/Record/AbstractRecord.php(277): call_user_func(Array, Array)
#9 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/Record/AbstractRecord.php(531): Omeka_Record_AbstractRecord->runCallbacks('beforeSave', Array)
#10 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/Controller/AbstractActionController.php(188): Omeka_Record_AbstractRecord->save(false)
#11 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/controllers/ItemsController.php(151): Omeka_Controller_AbstractActionController->addAction()
#12 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Controller/Action.php(516): ItemsController->addAction()
#13 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('addAction')
#14 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#15 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#16 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Zend/Application.php(382): Zend_Application_Bootstrap_Bootstrap->run()
#17 /Applications/XAMPP/xamppfiles/htdocs/omeka/application/libraries/Omeka/Application.php(79): Zend_Application->run()
#18 /Applications/XAMPP/xamppfiles/htdocs/omeka/admin/index.php(28): Omeka_Application->run()
#19 {main}

Ok. I had to add
storage.tempDir = "/tmp"
to the config.ini file