KCfinder in CKEditor: pop-up zonder upload links of afbeeldingen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sam Clauw

Sam Clauw

01/04/2016 21:38:55
Quote Anchor link
Hallo allen,

ik probeer momenteel om KCFinder in CKEditor te integreren zodat de gebruiker afbeeldingen en dergelijke in deze WYSIWYG editor kan uploaden. Ik slaagde er al in om de "Bladeren op server"-knop werkend te krijgen. Maar wanneer ik op deze knop klik, dan gaat er een pop-up open met de volgende ruwe php code:

Quote:
@copyright 2010-2014 KCFinder Project * @license http://opensource.org/licenses/GPL-3.0 GPLv3 * @license http://opensource.org/licenses/LGPL-3.0 LGPLv3 * @link http://kcfinder.sunhater.com */ require "core/bootstrap.php"; $browser = "kcfinder\browser"; // To execute core/bootstrap.php on older $browser = new $browser(); // PHP versions (even PHP 4) $browser->action();


Hoe kan ik dit voorkomen?

Dit is de boomstructuur van de website:

/coaster_cms/js/ckeditor-config.js
/coaster_cms/js/kcfinder/conf/config.php

Zo worden de javascript bestanden ingeladen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<script type="text/javascript" src="//code.jquery.com/jquery-2.2.1.min.js"></script>
<script type="text/javascript" src="//cdn.ckeditor.com/4.5.7/full/ckeditor.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.4/adapters/jquery.js"></script>
<script type="text/javascript" src="/coaster_cms/js/ckeditor-config.js"></script>


En hier het KCFinder config.js bestand:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$_CONFIG = array(


// GENERAL SETTINGS

    'disabled' => false,
    'uploadURL' => "upload",
    'uploadDir' => "",
    'theme' => "default",

    'types' => array(

    // (F)CKEditor types
        'files'   =>  "",
        'flash'   =>  "swf",
        'images'  =>  "*img",

    // TinyMCE types
        'file'    =>  "",
        'media'   =>  "swf flv avi mpg mpeg qt mov wmv asf rm",
        'image'   =>  "*img",
    ),


// IMAGE SETTINGS

    // alle afbeelding instellingen zijn de default instellingen

);


My ckeditor-config.js file:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$('textarea.ckeditor').ckeditor({
    language: 'nl',
    height: '400px',
    // speciale karakters niet escapen
    resize_enabled: false,
    entities_latin: false,
    entities_greek: false,
    entities: false,
    basicEntities: false,
    // extra plugins
    filebrowserBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
    filebrowserImageBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
    filebrowserFlashBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
    filebrowserUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
    filebrowserImageUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
    filebrowserFlashUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash'
});


Ik probeerde ook al even het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$('textarea.ckeditor').ckeditor({
    language: 'nl',
    height: '400px',
    // speciale karakters niet escapen
    resize_enabled: false,
    entities_latin: false,
    entities_greek: false,
    entities: false,
    basicEntities: false,
    // extra plugins
    filebrowserBrowseUrl: 'D:/Websites/Kattenbelletjes/03 - Online/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
    //filebrowserImageBrowseUrl: 'D:/Websites/Kattenbelletjes/03 - Online/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
    filebrowserFlashBrowseUrl: 'D:/Websites/Kattenbelletjes/03 - Online/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
    filebrowserUploadUrl: 'D:/Websites/Kattenbelletjes/03 - Online/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
    filebrowserImageUploadUrl: 'D:/Websites/Kattenbelletjes/03 - Online/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
    filebrowserFlashUploadUrl: 'D:/Websites/Kattenbelletjes/03 - Online/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash',
});


En het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
filebrowserBrowseUrl: 'D:/Websites/Kattenbelletjes/03 - Online/app/webroot/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
filebrowserImageBrowseUrl: 'D:/Websites/Kattenbelletjes/03 - Online/app/webroot/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
filebrowserFlashBrowseUrl: 'D:/Websites/Kattenbelletjes/03 - Online/app/webroot/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
filebrowserUploadUrl: 'D:/Websites/Kattenbelletjes/03 - Online/app/webroot/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
filebrowserImageUploadUrl: 'D:/Websites/Kattenbelletjes/03 - Online/app/webroot/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
filebrowserFlashUploadUrl: 'D:/Websites/Kattenbelletjes/03 - Online/app/webroot/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash',


... maar telkens zonder succes. Heeft er iemand enig idee wat ik er mee aan kan vangen?
Bedankt in ieder geval ;)
Gewijzigd op 01/04/2016 21:42:34 door Sam Clauw
 
PHP hulp

PHP hulp

24/04/2024 03:06:54
 
- Ariën  -
Beheerder

- Ariën -

01/04/2016 22:34:45
Quote Anchor link
Gebruik een URL i.p.v. een pad.
 
Sam Clauw

Sam Clauw

02/04/2016 00:35:56
Quote Anchor link
- Ariën - op 01/04/2016 22:34:45:
Gebruik een URL i.p.v. een pad.

In m'n eerste poging (zie eerste config bestand) probeerde ik al eens een URL uit:


Jammer genoeg blijkt dit (in mijn geval) niet te werken.
 
- Ariën  -
Beheerder

- Ariën -

02/04/2016 09:19:15
Quote Anchor link
Hoe zien de eerste 20 regels php-script van browse.php eruit? Verder werkt die URL niet.
Gewijzigd op 02/04/2016 09:20:08 door - Ariën -
 
Sam Clauw

Sam Clauw

03/04/2016 10:17:13
Quote Anchor link
Dat zijn de eerste 20 regels:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

/** This file is part of KCFinder project
  *
  *      @desc Browser calling script
  *   @package KCFinder
  *   @version 3.12
  *    @author Pavel Tzonkov <[email protected]>
  * @copyright 2010-2014 KCFinder Project
  *   @license http://opensource.org/licenses/GPL-3.0 GPLv3
  *   @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
  *      @link http://kcfinder.sunhater.com
  */


require "core/bootstrap.php";
$browser = "kcfinder\\browser"; // To execute core/bootstrap.php on older
$browser = new $browser();      // PHP versions (even PHP 4)
$browser->action();

?>


Hier heb ik sowieso nog niets in aangepast, 't is namelijk code van CKEditor zelf. De link werd als lokaal domein ingesteld, vandaar dat het hier niet werkt ;)
 
- Ariën  -
Beheerder

- Ariën -

03/04/2016 11:40:47
Quote Anchor link
Als je netjes een URL gebruikt, het PHP bestand de extentie '.php' meegeeft en de volledige PHP-tag gebruikt...
dan zou het moeten werken.
 
Sam Clauw

Sam Clauw

03/04/2016 21:01:58
Quote Anchor link
- Ariën - op 03/04/2016 11:40:47:
Als je netjes een URL gebruikt, het PHP bestand de extentie '.php' meegeeft en de volledige PHP-tag gebruikt...

Ik vraag me wel nog af naar welk bestand dit moet linken. Staat die dubbele backslash dan gelijk aan het escapen van die ene backslash? Zo ja, dan nog vind ik nergens het "kcfinder/browser.php" bestand terug. Al heb ik het gevoel dat ik het verhaal hier niet helemaal meer volg? :)
 
- Ariën  -
Beheerder

- Ariën -

03/04/2016 21:08:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$('textarea.ckeditor').ckeditor({
    language: 'nl',
    height: '400px',
    // speciale karakters niet escapen
    resize_enabled: false,
    entities_latin: false,
    entities_greek: false,
    entities: false,
    basicEntities: false,
    // extra plugins
    filebrowserBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
    filebrowserImageBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
    filebrowserFlashBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
    filebrowserUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
    filebrowserImageUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
    filebrowserFlashUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash'
});

Dit zou gewoon moeten werken, hoewel ik liever een relatieve pad in je URL zie. Dat scheelt je een hoop URL's in je configuratie aan te passen als je 'live' gaat ;-).
 
Sam Clauw

Sam Clauw

03/04/2016 21:27:34
Quote Anchor link
Het absolute pad in m'n ckeditor-config.js had ik al eens geprobeerd (zie startpost). Dat resulteerde in de letterlijke php code die werd getoond.

Dit is hetgeen ik nu letterlijk heb staan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
$('textarea.ckeditor').ckeditor({
    language: 'nl',
    height: '400px',
    // speciale karakters niet escapen
    resize_enabled: false,
    entities_latin: false,
    entities_greek: false,
    entities: false,
    basicEntities: false,
    // extra plugins
    filebrowserBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
    filebrowserImageBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
    filebrowserFlashBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
    filebrowserUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
    filebrowserImageUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
    filebrowserFlashUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash',
    
    // beheren van de groepen en knoppen
    toolbarGroups: [
        {
name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
        {
name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
        {
name: 'links', groups: [ 'links' ] },
        {
name: 'insert', groups: [ 'insert' ] },
        '/',
        {
name: 'styles', groups: [ 'styles' ] },
        {
name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
        {
name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
        {
name: 'forms', groups: [ 'forms' ] },
        {
name: 'tools', groups: [ 'tools' ] },
        {
name: 'document', groups: [ 'document', 'doctools', 'mode' ] },
        {
name: 'colors', groups: [ 'colors' ] },
        {
name: 'about', groups: [ 'about' ] },
        {
name: 'others', groups: [ 'others' ] }
    ],

    // knoppen tonen en verbergen
    removeButtons: 'Print,Save,Templates,NewPage,Preview,Paste,PasteFromWord,Undo,Redo,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,Outdent,Indent,Blockquote,CreateDiv,BidiLtr,BidiRtl,Language,Flash,PageBreak,Iframe,Font,FontSize,TextColor,BGColor',
    // stijlen dropdown
    stylesSet: [
        // Block-level styles
        /*{ name: 'Blue Title', element: 'h2', styles: { 'color': 'Blue' } },
        { name: 'Red Title' , element: 'h3', styles: { 'color': 'Red' } },*/
        // Inline styles
        /*{ name: 'CSS Style', element: 'span', attributes: { 'class': 'my_style' } },
        { name: 'Marker: Yellow', element: 'span', styles: { 'background-color': 'Yellow' } }*/

    ],
    // elementen dropdown
    format_tags: 'h1;h2' // enkel deze elementen mogen in de dropdownlijst worden getoond
});
?>


Hopelijk ben ik wat duidelijk genoeg in het schetsen van m'n situatie? :)
Gewijzigd op 03/04/2016 21:27:50 door Sam Clauw
 
- Ariën  -
Beheerder

- Ariën -

03/04/2016 21:48:33
Quote Anchor link
Als je letterlijke PHP-code ziet, dan:

- mis je de .php extentie
- Gebruik je mogelijk een lokaal pad op je eigen computer (D:/Websites/Kattenbelletjes/etc.....)
- Worden er <? i.p.v. <?php tags gebruikt.
- Word er ergens PHP geblokkeerd, mogelijk in een .htaccess.
 
Sam Clauw

Sam Clauw

04/04/2016 21:21:43
Quote Anchor link
Okay, ik probeer even alles op een rijtje te zetten en toe te passen op mijn situatie. Volgens mij zal het in een ongelooflijk klein detail zitten, want met je aangeleverde informatie lukt het me nog steeds niet.

M'n lokale website werkt via XAMPP en staat op de D-drive (D:\Websites\Kattenbelletjes)

In m'n hosts bestand (C:\Windows\System32\drivers\etc\hosts) staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
127.0.0.1 development.kattenbelletjes.be


en in httpd-vhosts.conf (C:\xampp\apache\conf\extra\httpd-vhosts.conf) staat:

Quote:
<VirtualHost development.kattenbelletjes.be>
DocumentRoot "D:\Websites\Kattenbelletjes\03 - Online\app\webroot"
ServerName development.kattenbelletjes.be

SetEnv CAKEPHP_DEBUG 2

<Directory "D:\Websites\Kattenbelletjes\03 - Online\app\webroot">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>


Ik heb een CMS systeem dat op CakePHP is gebaseerd. Het CMS systeem in in feite een plugin waarvan alle noodzakelijke files via /App/Plugin/CoasterCms/ terug te vinden zijn. Daarin staat er ergens een view file (add.ctp) die een formulier met een tekstvak bevat. Het tekstvak wordt dankzij jQuery door CKEditor (gehost op CDN) vervangen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$this
->Html->script('//code.jquery.com/jquery-2.2.1.min.js', array('block' => 'coreJS'));
$this->Html->script('//cdn.ckeditor.com/4.5.7/full/ckeditor.js', array('inline' => false));
$this->Html->script('//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.4/adapters/jquery.js', array('inline' => false));
$this->Html->script('CoasterCms.ckeditor-config', array('inline' => false));

?>


De laatste regel zorgt dat het .js configuratiebestand (en dus geen .php file zoals m'n vorige reactie misschien wel liet vermoeden) wordt aangeroepen en dat er wat maatwerk op de CKEditor kan worden toegepast. De mijne ziet er momenteel zo uit:

Quote:
$('textarea.ckeditor').ckeditor({
language: 'nl',
height: '400px',
// speciale karakters niet escapen
resize_enabled: false,
entities_latin: false,
entities_greek: false,
entities: false,
basicEntities: false,
// extra plugins
filebrowserBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
filebrowserImageBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
filebrowserFlashBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
filebrowserUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
filebrowserImageUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
filebrowserFlashUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash',
// beheren van de groepen en knoppen
toolbarGroups: [
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
{ name: 'links', groups: [ 'links' ] },
{ name: 'insert', groups: [ 'insert' ] },
'/',
{ name: 'styles', groups: [ 'styles' ] },
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
{ name: 'forms', groups: [ 'forms' ] },
{ name: 'tools', groups: [ 'tools' ] },
{ name: 'document', groups: [ 'document', 'doctools', 'mode' ] },
{ name: 'colors', groups: [ 'colors' ] },
{ name: 'about', groups: [ 'about' ] },
{ name: 'others', groups: [ 'others' ] }
],
// knoppen tonen en verbergen
removeButtons: 'Print,Save,Templates,NewPage,Preview,Paste,PasteFromWord,Undo,Redo,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,Outdent,Indent,Blockquote,CreateDiv,BidiLtr,BidiRtl,Language,Flash,PageBreak,Iframe,Font,FontSize,TextColor,BGColor',
// stijlen dropdown
stylesSet: [
// Block-level styles
/*{ name: 'Blue Title', element: 'h2', styles: { 'color': 'Blue' } },
{ name: 'Red Title' , element: 'h3', styles: { 'color': 'Red' } },*/
// Inline styles
/*{ name: 'CSS Style', element: 'span', attributes: { 'class': 'my_style' } },
{ name: 'Marker: Yellow', element: 'span', styles: { 'background-color': 'Yellow' } }*/
],
// elementen dropdown
format_tags: 'h1;h2' // enkel deze elementen mogen in de dropdownlijst worden getoond
});


Als ik het goed voor heb, dan linkt de filebrowserBrowseUrl naar het pad (of naar de url?) waar het bestand staat die de boomstructuur in de upload map bijhoudt. Van mij zou die upload map gewoon onder de root van de website mogen staan, dus gewoon "/uploads".

Dat upload bestand (/coaster_cms/js/kcfinder/browse.php) voldoet aan de volgende voorwaarden:

- het heeft de .php extensie
- Het bevat < ?php tags (en dus niet de shorthand < ? tags)
- de filebrowserBrowseUrl wordt niet als lokaal bestand gelinkt

Ariën, zoals je reeds aan gaf is de laatste mogelijkheid misschien wel één of andere .htaccess file. Naar welke regel hoor ik specifiek te zoeken? Ik verwijderde al even de .htaccess file onder "/coaster_cms/js/kcfinder/upload/.htaccess" met de volgende inhoud:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
<IfModule mod_php4.c>
  php_flag engine Off
</IfModule>
<
IfModule mod_php5.c>
  php_flag engine Off
</IfModule>
<
IfModule mod_php6.c>
  php_flag engine Off
</IfModule>
<
IfModule mod_cgi.c>
  Options -ExecCGI
</IfModule>

RemoveHandler .cgi .pl .py .pyc .pyo .phtml .php .php3 .php4 .php5 .php6 .pcgi .pcgi3 .pcgi4 .pcgi5 .pchi6 .inc
RemoveType .cgi .pl .py .pyc .pyo .phtml .php .php3 .php4 .php5 .php6 .pcgi .pcgi3 .pcgi4 .pcgi5 .pchi6 .inc
SetHandler None
SetHandler default-handler

# Remove both lines below if you want to render HTML files from the upload folder
AddType text/plain .html
AddType text/plain .htm
?>


Ik kreeg echter nog steeds de geprinte php output:

Quote:
* @copyright 2010-2014 KCFinder Project * @license http://opensource.org/licenses/GPL-3.0 GPLv3 * @license http://opensource.org/licenses/LGPL-3.0 LGPLv3 * @link http://kcfinder.sunhater.com */ require "core/bootstrap.php"; $browser = "kcfinder\\browser"; // To execute core/bootstrap.php on older $browser = new $browser(); // PHP versions (even PHP 4) $browser->action(); ?>


Andere .htaccess files heb ik ook al eventjes geleegd qua inhoud:

- D:\Websites\Kattenbelletjes\03 - Online\app\Plugin\CoasterCms\webroot\js\kcfinder\conf\.htaccess
- D:\Websites\Kattenbelletjes\03 - Online\app\Plugin\CoasterCms\webroot\js\kcfinder\conf\upload.htaccess

De meeste .htaccess files in die kcfinder map bevatten:

Quote:
<Files *>
Order allow,deny
Deny from all
</Files>


Hopelijk blijkt er dankzij de bovenstaande uitgebreide uitleg dat er toch iets kleins over het hoofd wordt gezien. 'k Ben na enkele dagen zoeken toch wat moedeloos aan 't worden :)

Toevoeging op 04/04/2016 21:41:39:

Sam Clauw op 04/04/2016 21:21:43:
Okay, ik probeer even alles op een rijtje te zetten en toe te passen op mijn situatie. Volgens mij zal het in een ongelooflijk klein detail zitten, want met je aangeleverde informatie lukt het me nog steeds niet.

M'n lokale website werkt via XAMPP en staat op de D-drive (D:\Websites\Kattenbelletjes)

In m'n hosts bestand (C:\Windows\System32\drivers\etc\hosts) staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
127.0.0.1 development.kattenbelletjes.be


en in httpd-vhosts.conf (C:\xampp\apache\conf\extra\httpd-vhosts.conf) staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost development.kattenbelletjes.be>
  DocumentRoot "D:\Websites\Kattenbelletjes\03 - Online\app\webroot"
  ServerName development.kattenbelletjes.be
  
  SetEnv CAKEPHP_DEBUG 2
  
  <Directory "D:\Websites\Kattenbelletjes\03 - Online\app\webroot">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>


Ik heb een CMS systeem dat op CakePHP is gebaseerd. Het CMS systeem in in feite een plugin waarvan alle noodzakelijke files via /App/Plugin/CoasterCms/ terug te vinden zijn. Daarin staat er ergens een view file (add.ctp) die een formulier met een tekstvak bevat. Het tekstvak wordt dankzij jQuery door CKEditor (gehost op CDN) vervangen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$this
->Html->script('//code.jquery.com/jquery-2.2.1.min.js', array('block' => 'coreJS'));
$this->Html->script('//cdn.ckeditor.com/4.5.7/full/ckeditor.js', array('inline' => false));
$this->Html->script('//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.4/adapters/jquery.js', array('inline' => false));
$this->Html->script('CoasterCms.ckeditor-config', array('inline' => false));

?>


De laatste regel zorgt dat het .js configuratiebestand (en dus geen .php file zoals m'n vorige reactie misschien wel liet vermoeden) wordt aangeroepen en dat er wat maatwerk op de CKEditor kan worden toegepast. De mijne ziet er momenteel zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$('textarea.ckeditor').ckeditor({
    language: 'nl',
    height: '400px',
    // speciale karakters niet escapen
    resize_enabled: false,
    entities_latin: false,
    entities_greek: false,
    entities: false,
    basicEntities: false,
    // extra plugins
    filebrowserBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=files',
    filebrowserImageBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=images',
    filebrowserFlashBrowseUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/browse.php?opener=ckeditor&type=flash',
    filebrowserUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=files',
    filebrowserImageUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=images',
    filebrowserFlashUploadUrl: 'http://development.kattenbelletjes.be/coaster_cms/js/kcfinder/upload.php?opener=ckeditor&type=flash',
    // beheren van de groepen en knoppen
    toolbarGroups: [
        { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
        { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
        { name: 'links', groups: [ 'links' ] },
        { name: 'insert', groups: [ 'insert' ] },
        '/',
        { name: 'styles', groups: [ 'styles' ] },
        { name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
        { name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
        { name: 'forms', groups: [ 'forms' ] },
        { name: 'tools', groups: [ 'tools' ] },
        { name: 'document', groups: [ 'document', 'doctools', 'mode' ] },
        { name: 'colors', groups: [ 'colors' ] },
        { name: 'about', groups: [ 'about' ] },
        { name: 'others', groups: [ 'others' ] }
    ],
    // knoppen tonen en verbergen
    removeButtons: 'Print,Save,Templates,NewPage,Preview,Paste,PasteFromWord,Undo,Redo,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,Outdent,Indent,Blockquote,CreateDiv,BidiLtr,BidiRtl,Language,Flash,PageBreak,Iframe,Font,FontSize,TextColor,BGColor',
    // stijlen dropdown
    stylesSet: [
        // Block-level styles
        /*{ name: 'Blue Title', element: 'h2', styles: { 'color': 'Blue' } },
        { name: 'Red Title' , element: 'h3', styles: { 'color': 'Red' } },*/
        // Inline styles
        /*{ name: 'CSS Style', element: 'span', attributes: { 'class': 'my_style' } },
        { name: 'Marker: Yellow', element: 'span', styles: { 'background-color': 'Yellow' } }*/
    ],
    // elementen dropdown
    format_tags: 'h1;h2' // enkel deze elementen mogen in de dropdownlijst worden getoond
});


Als ik het goed voor heb, dan linkt de filebrowserBrowseUrl naar het pad (of naar de url?) waar het bestand staat die de boomstructuur in de upload map bijhoudt. Van mij zou die upload map gewoon onder de root van de website mogen staan, dus gewoon "/uploads".

Dat upload bestand (/coaster_cms/js/kcfinder/browse.php) voldoet aan de volgende voorwaarden:

- het heeft de .php extensie
- Het bevat < ?php tags (en dus niet de shorthand < ? tags)
- de filebrowserBrowseUrl wordt niet als lokaal bestand gelinkt

Ariën, zoals je reeds aan gaf is de laatste mogelijkheid misschien wel één of andere .htaccess file. Naar welke regel hoor ik specifiek te zoeken? Ik verwijderde al even de .htaccess file onder "/coaster_cms/js/kcfinder/upload/.htaccess" met de volgende inhoud:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<IfModule mod_php4.c>
  php_flag engine Off
</IfModule>
<IfModule mod_php5.c>
  php_flag engine Off
</IfModule>
<IfModule mod_php6.c>
  php_flag engine Off
</IfModule>
<IfModule mod_cgi.c>
  Options -ExecCGI
</IfModule>

RemoveHandler .cgi .pl .py .pyc .pyo .phtml .php .php3 .php4 .php5 .php6 .pcgi .pcgi3 .pcgi4 .pcgi5 .pchi6 .inc
RemoveType .cgi .pl .py .pyc .pyo .phtml .php .php3 .php4 .php5 .php6 .pcgi .pcgi3 .pcgi4 .pcgi5 .pchi6 .inc
SetHandler None
SetHandler default-handler

# Remove both lines below if you want to render HTML files from the upload folder
AddType text/plain .html
AddType text/plain .htm


Ik kreeg echter nog steeds de geprinte php output:

Quote:
* @copyright 2010-2014 KCFinder Project * @license http://opensource.org/licenses/GPL-3.0 GPLv3 * @license http://opensource.org/licenses/LGPL-3.0 LGPLv3 * @link http://kcfinder.sunhater.com */ require "core/bootstrap.php"; $browser = "kcfinder\\browser"; // To execute core/bootstrap.php on older $browser = new $browser(); // PHP versions (even PHP 4) $browser->action(); ?>


Andere .htaccess files heb ik ook al eventjes geleegd qua inhoud:

- D:\Websites\Kattenbelletjes\03 - Online\app\Plugin\CoasterCms\webroot\js\kcfinder\conf\.htaccess
- D:\Websites\Kattenbelletjes\03 - Online\app\Plugin\CoasterCms\webroot\js\kcfinder\conf\upload.htaccess

De meeste .htaccess files in die kcfinder map bevatten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<Files *>
Order allow,deny
Deny from all
</Files>


Hopelijk blijkt er dankzij de bovenstaande uitgebreide uitleg dat er toch iets kleins over het hoofd wordt gezien. 'k Ben na enkele dagen zoeken toch wat moedeloos aan 't worden :)
Gewijzigd op 04/04/2016 21:40:11 door Sam Clauw
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 21:45:30
Quote Anchor link
Gelukkig hebben we ook code-tags om je code in te plaatsen.

Die .htaccess met die php-flag's verhindert inderdaad uitvoer van PHP-scripts. Ik kan me indenken dat dit handig zou zijn in de map voor uploads, maar niet voor een applicatie zoals Ckfinder want die moet gewoon worden uitgevoerd. Dus verwijder of hernoem (htaccess.weg bijv.) deze .htaccess eens.
 
Sam Clauw

Sam Clauw

05/04/2016 20:59:56
Quote Anchor link
Ook met het veranderen van de naamgeving van de .htaccess files werkte het nog steeds niet. Ik heb dan maar even alles stap voor stap uit de CakePHP plugin gehaald en in de js root map geplaatst + de externe bestanden gedownload en gebruikt. Als bij wonder krijg ik de kcfinder nu wel te zien, begrijpe wie begrijpe kan...

Ik zal dus besluiten om de CKEditor en de CKFinder gewoon in de root JS map te laten staan gezien ik er nu al zovele dagen op zit te zoeken. Bij deze sowieso een dikke, dikke merci om mij te ondersteunen in deze frustrerende zoektocht. Het is niet 100% zoals ik het wou, maar 95% is ook al heel wat hé ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.