Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Denwer & OpenServer не передают файл.
Форумы портала PHP.SU » » Если скрипт не работает » Denwer & OpenServer не передают файл.

Страниц (1): [1]
 

1. DobrijUser - 20 Февраля, 2013 - 04:33:16 - перейти к сообщению
Доброго времени суток.
Ситуация следующая: курлом в пост-запросе передаю файл.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $url='somesite';
  4. $file='./text.txt';
  5. $array=array('var1'=>'1','var2'=>'2','var3'=>'3' ... 'file'=>'@'.$file);
  6.  
  7. $get_list=curl_init();
  8. curl_setopt($get_list, CURLOPT_URL, $url);
  9. curl_setopt($get_list, CURLOPT_HEADER, 0);
  10. curl_setopt($get_list, CURLOPT_RETURNTRANSFER, true);
  11. curl_setopt($get_list, CURLOPT_FOLLOWLOCATION, 1);
  12. curl_setopt($get_list, CURLOPT_POST,true);
  13. curl_setopt($get_list, CURLOPT_POSTFIELDS, $array);
  14. $end=curl_exec($get_list);
  15. curl_close($get_list);
  16. die($list);
  17. ?>
  18.  


Так вот всё отлично и корректно работает, но, только если скрипт работает на хосте. В Denwer'e и Open Server'e возвращается пустая страница, причём обе программы даже не отправляют данные. Ежели удалить элемент массива с файлом - всё нормально отправляется, но вот с файлом никак не хотят. На хосте, повторюсь, всё работает. Windows 7 проф.
В чём может быть причина?
2. DelphinPRO - 20 Февраля, 2013 - 07:23:35 - перейти к сообщению
возможно в том, что в винде обратный слеш используется для разделения каталогов.. .\text.txt
а может стоит указать абсолютный путь к файлу
$file = __DIR__ . DIRECTORY_SEPARATOR . 'text.txt';
3. caballero - 20 Февраля, 2013 - 08:40:30 - перейти к сообщению
винде по боку какой слеш.

но такие конструкции
$file='./text.txt';
не приветствуются
4. DobrijUser - 20 Февраля, 2013 - 16:57:18 - перейти к сообщению
DelphinPRO пишет:
возможно в том, что в винде обратный слеш используется для разделения каталогов.. .\text.txt
а может стоит указать абсолютный путь к файлу
$file = __DIR__ . DIRECTORY_SEPARATOR . 'text.txt';


Большое спасибо, помогло второе)
То есть при отправке файлов подобным образом нужно использовать подобные конструкции, в остальных же случаях можно указывать как прежде, относительные пути, вроде './, ../'?
(Добавление)
Ещё решение нашлось. Достаточно было использовать realpath во избежание казуса. Сразу путь к файлу, с разделителями соответствующими ос.

 

Powered by ExBB FM 1.0 RC1