Как установить путь к изображению для fckeditor? - PullRequest
1 голос
/ 08 июня 2009

Я использую fckeditor для PHP. Я установил абсолютный путь для загрузки изображений. Я могу загрузить изображения, но я не могу использовать загруженные изображения. Может кто-нибудь помочь мне найти мою проблему?

Вот код, который я изменил в моем файле config.php:

// Path to user files relative to the document root.
$Config['UserFilesPath'] = '/userfiles/' ;

// Fill the following value it you prefer to specify the absolute path for the
// user files directory. Useful if you are using a virtual directory, symbolic
// link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
// Attention: The above 'UserFilesPath' must point to the same directory.
$Config['UserFilesAbsolutePath'] = '/var/www/host/mysite//userfiles/' ;

Ответы [ 5 ]

4 голосов
/ 24 марта 2011

Я только что решил эту неприятную проблему после целого дня поиска в Google.

Решение здесь . Ищите:

Возвращение полных URL

Вы можете настроить обозреватель файлов так, чтобы он возвращал полные URL-адреса FCKeditor, например "http://www.example.com/userfiles/", вместо абсолютных URL-адресов, например" / userfiles / ". Для этого необходимо настроить соединитель, объединяя параметры UserFilesPath и UserFilesAbsolutePath:

  • UserFilesPath: укажите здесь полный URL-адрес для каталога пользовательских файлов. Например, установите его на "http://www.example.com/userfiles/".

  • UserFilesAbsolutePath: укажите здесь путь к серверу для доступа к указанному выше каталогу URL. Например, в среде Windows у вас может быть что-то вроде «C: / inetpub / mysite / userfiles /», а в Linux - что-то вроде «/usr/me/public_html/mysite/userfiles/".

Просто настройте вышеуказанные параметры в соответствии с вашими установочными значениями, и браузер файлов начнет возвращать полный URL-адрес редактору.

2 голосов
/ 25 ноября 2012

Для вашего локального хоста:

$Config['UserFilesPath'] = 'http://localhost/mywebsite/userfiles/' ;
$Config['UserFilesAbsolutePath'] = 'C:\\wamp\www\\mywebsite\\userfiles\\' ;

и для получения изображений используйте:

$path = 'http://localhost/mywebsite/userfiles/image/myimage.jpg';

Теперь, для вашего веб-сервера:

    $Config['UserFilesPath'] = 'http://localhost/mywebsite/userfiles/' ; // if your webserver named localhost as mine
$Config['UserFilesAbsolutePath'] = '/var/www/vhosts/mywebsite.com/httpdocs/' ;

и путь к изображениям остается таким же, как указано выше.

1 голос
/ 08 июня 2009

Проверьте разрешение папки

0 голосов
/ 25 декабря 2014

UserFilesPath: укажите здесь полный URL-адрес для каталога пользовательских файлов. Например, установите его на "http://www.example.com/userfiles/".

0 голосов
/ 29 сентября 2013

Полная тема: Редактор FCK 2.x: загрузка файлов / изображений / видео в разные папки для разных приложений с использованием одного FCKeditor, делая $ Config ['UserFilesPath'] полностью динамическим и безопасным образом

Это можно сделать разными способами. Я объясняю процесс, который я применил согласно структуре кода моих приложений php. Та же самая структура кода / структура, которой я следовал для разных приложений, с каждым приложением в качестве подпапки на моем сервере. Таким образом, существует логическая необходимость использовать один FCKeditor и настраивать его каким-либо образом, чтобы он работал правильно для всех приложений. Содержательная часть FCKeditor в порядке. Он может быть легко использован различными приложениями или проектами из одного компонента FCKeditor. Но проблема возникает с загрузкой файлов, таких как изображения, видео или любой другой документ. Чтобы сделать его применимым к другому проекту, файлы должны быть загружены в отдельные папки для разных проектов. И для этого $ Config ['UserFilesPath'] должен быть настроен с динамическим путем к папке, означает разные пути к папке для каждого проекта, но вызывать один и тот же компонент FCKeditor в том же месте. Я объясняю некоторые разные процессы вместе пошаговым способом. Они отлично работали с FCKeditor версии 2.5.1 и VersionBuild 17566, и я надеюсь, что они будут работать и для других. Если это не работает для других разработчиков, возможно, им потребуется внести некоторые изменения в этот процесс в соответствии со структурой кода проекта и разрешением на запись в папку, а также с версией FCKeditor.

1) В файле fckeditor \ editor \ filemanager \ connectors \ phpconfig.php

а) Перейти к глобальному $ Config; и $ Config ['Enabled'] = false; i) Там, если требуется безопасный безопасный метод, зависящий от сеанса: только для настройки одного сайта: то есть один FCKeditor для каждого одного домена или субдомена проекта, а не один FCKeditor для нескольких проектов, затем поместите этот код:

if(!isset($_SESSION)){
session_start(); 
}

if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") { 
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH']; 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php");
}

N.B .: Здесь, $ _SESSION ['SESSION_SERVER_RELATIVEPATH']: относительный путь к папке проекта, соответствующий webroot; должно быть похоже на «/ project / folder / path /» и установить эту переменную сеанса в общем файле в вашем проекте, где сеанс начался. И в вашем файле конфигурации должен быть файл configurations / configuration.php. Если его имя или путь отличаются, вы должны указать здесь соответствующий путь вместо config / configuration.php

ii) Если вы хотите использовать один компонент FCKeditor для разных проектов, представленных в виде разных подпапок и с безопасным способом, зависящим от сеанса (при условии, что для разных проектов различается session_name, чтобы дифференцировать их сеансы на одном сервере). Но это не сработает, если проекты представлены в виде поддоменов или разных доменов, тогда придется использовать независимый от сеанса способ (iii), указанный ниже (хотя это небезопасно). Разместите этот код:

if(!isset($_SESSION)){
session_name($_REQUEST['param_project_to_fck']); 
session_start(); 
}

if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") { 
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH']; 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php");
}

Пожалуйста, прочитайте Н.Б. в конце предыдущего пункта, т.е. пункта (i)

iii) Если вы хотите использовать один компонент FCKeditor для разных проектов, представленных в разных подпапках, а также в поддоменах или доменах (хотя это не является полностью безопасным). Поместите этот код:

if(isset($_REQUEST['param_project_to_fck']) && $_REQUEST['param_project_to_fck']!=""){ //base64 encoded relative folder path of the project corresponding to the webroot; should be like "/project/folder/path/" before encoding 
$relative_path=base64_decode($_REQUEST['param_project_to_fck']);
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php");
}

Пожалуйста, прочитайте Н.Б. в конце пункта (i)

b) Теперь после этого для любого выбранного вами случая найдите этот код:

// Path to user files relative to the document root.
$Config['UserFilesPath'] = '/userfiles/' ;

и замените следующий код:

if(isset($SERVER_RELATIVEPATH) &&  $SERVER_RELATIVEPATH==$relative_path) { //to make it relatively secure so that hackers can not create any upload folder automatcally in the server, using a direct link and can not upload files there 
$Config['Enabled'] = true ;
$file_upload_relative_path=$SERVER_RELATIVEPATH;
}else{
$Config['Enabled'] = false ;
exit();
}
// Path to user files relative to the document root.
//$Config['UserFilesPath'] = '/userfiles/' ;
//$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ;
$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path;

Здесь $ SERVER_RELATIVEPATH - это относительный путь, и он должен быть задан в файле конфигурации вашего проекта, включенном ранее.

Здесь вы можете установить $ Config ['UserFilesPath'] с любым другим динамическим путем к папке, используя переменную $ file_upload_relative_path. На моем сервере bluehost linux, поскольку они были конфликтом прав доступа пользователя к папке между корневой папкой проекта (разрешение 0755) и папка userfiles под ней и подпапки под userfiles (должно быть 0777 в соответствии с кодировкой FCKeditor), поэтому она не позволяет загружать файлы в эти папки. Итак, я создал папку userfiles в webroot на сервере (за пределами корневой папки проекта) и установил для нее разрешение 0777, используйте код для параметра $ config:

$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path; 

Но, если у вас нет проблем с разрешением на запись в подпапках проекта в вашем случае, тогда вы можете использовать предыдущую строку (закомментированную в предыдущем сегменте кода):

$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ;

Имейте в виду, вы должны закомментировать существующий $ Config ['UserFilesPath'] = '/ userfiles /'; в этом файле, заменив или просто закомментировав, если он существует в другом месте файла.

2) Если вы выберете 1) (a) (ii) или (iii) метод, откройте
(a) fckeditor \ editor \ filemanager \ browser \ default \ browser.html.

Поиск этой строки: var sConnUrl = GetUrlParam ('Connector');

Поместите эти команды после этой строки:

var param_project_to_fck = GetUrlParam( 'param_project_to_fck' ) ; 

Теперь выполните поиск этой строки: sUrl + = '& CurrentFolder =' + encodeURIComponent (this.CurrentFolder);

Поставьте эту команду после этой строки:

sUrl += '&param_project_to_fck=' + param_project_to_fck ; 

(b) Теперь откройте файл ckeditor \ editor \ filemanager \ browser \ default \ frmupload.html.

Поиск этой строки (она должна быть в функции SetCurrentFolder ()):

sUrl += '&CurrentFolder=' + encodeURIComponent( folderPath ) ;

Поставьте эту команду после этой строки:

sUrl += '&param_project_to_fck='+window.parent.param_project_to_fck;

3) Теперь, когда вы хотите показать FCKeditor в своем проекте, вы должны поместить эти строки сначала в соответствующий файл / страницу php:

include_once(Absolute/Folder/path/for/FCKeditor/."fckeditor/fckeditor.php") ; 
$oFCKeditor = new FCKeditor(Field_name_for_editor_content_area) ;
$oFCKeditor->BasePath = http_full_path_for_FCKeditor_location.'fckeditor/' ;
$oFCKeditor->Height = 400;
$oFCKeditor->Width = 600;
$oFCKeditor->Value =Your_desired_content_to_show_in_editor;
$oFCKeditor->Create() ; 

a) Теперь, если вы выберете метод 1) (a) (ii) или (iii), поместите следующий сегмент кода перед этой строкой: $ oFCKeditor-> Create ();

$oFCKeditor->Config["LinkBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH);
$oFCKeditor->Config["ImageBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH);
$oFCKeditor->Config["FlashBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH);

b) если вы выбрали метод 1) (a) (ii), то в указанном выше фрагменте кода кода просто замените все тексты: base64_encode ($ SERVER_RELATIVEPATH) на этот: base64_encode (session_name ())

И все готово.

...