Код, который я сейчас поддерживаю, использует Yii v1.0 и Uber Uploader для загрузки файлов. Это делается путем вызова perl-скрипта uber uploaders из jquery.post внутри js-файла. Я использую виртуальный сервер Godaddy Linux с PHP версии 5.3.28
скрипт perl наконец вызывается в строке ubr_file_upload.js:
jQuery.post(this.path_to_link_script, data, function(){}, "script");
где path_to_link_script это /scgi-bin/ubr_upload.pl
, Это происходит внутри функции JS под названием linkUpload
который вызывается из формы загрузки в fileUpload.php
при нажатии кнопки отправки:
<form id="<?php echo $PARMS[$i]['id'];?>
_ubr_upload_form" name="<?php echo $PARMS[$i]['id'];?>
_ubr_upload_form" method="post" enctype="multipart/form-data"action="#" onSubmit="return UU<?php echo $i?>.linkUpload();">`
Который отображается с помощью виджета yii в:
$this->render('fileUpload',array('PARMS'=>$this->_uberSettings->PARMS,
'debug_ajax'=>$this->_uberSettings->INI['debug_ajax']));`
Когда пользователи переходят на форму, выбирают файл и нажимают кнопку «загрузить», в консоли chrome появляется следующая ошибка:
POST https://www.example.com/scgi-bin/ubr_upload.pl?upload_id=b5XXXXXXXXXbcc0
404 (CHttpException)
(Xs добавлены для сохранения конфиденциальности)
Затем, проверяя вкладку Сеть, я вижу следующий сбой вызова после вызова при нажатии кнопки отправки:
https://www.example.com/scgi-bin/ubr_upload.pl?upload_id=b5XXXXXXXXXbcc0
Ответ, который он получает, следующий:
Page Not Found
Unable to resolve the request "scgi-bin/ubr_upload.pl".
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact [email protected].
Похоже, что Yii пытается решить URL вместо выполнения сценария.
Если я, однако, посетить тот же URL вручную (https://www.example.com/scgi-bin/ubr_upload.pl?upload_id=b5XXXXXXXXXbcc0), он выполняет скрипт perl правильно.
Я застрял. Полностью. Любая помощь будет принята с благодарностью.
В конце концов проблема была в виджете Uber Uploader EuberUploaderWidget. Виджет повторно объявлял TEMP_DIR с $this->_uberSettings->TEMP_DIR = ...
используя жестко заданный путь (который, конечно, был неправильным после перемещения всей установки в новую папку).
Я не зарегистрировался там, так как я уже изменил его в модели, плюс Uber Uploader не дал любой ошибка, которая привела бы меня к этому направлению, это было совершенно случайно, что мы закончили тем, что попробовали это.
Других решений пока нет …