Showing posts with label CakePHP. Show all posts
Showing posts with label CakePHP. Show all posts

28 June, 2011

WordPress og CakePHP: accesslevels

På WordPress Codex kan man læse, at access levels er forældede; men et kig i databasen viser, at de stadig er en del af brugerprofilen. Eftersom disse levels blot er et tal i databasen, så kan man sætte CakePHP i stand til at læse tabellen. Og dermed er det nemt at styre brugeradgangen. Men det er et åbent spørgsmål om disse talværdier forsvinder?

20 June, 2011

Kontemplation - WordPress og CakePHP

Denne tråd anbefaler at lægge WordPress i

## ../cake/app/webroot/blog/

Det må kunne lade sig gøre at bruge CakePHP sammen med WP, fx til styring af brugeradgang.

Denne tråd bruger data fra WPs login via php.

Hvis metoden virker, så kan man bruge WP som login og til styring af rettigheder.

WP giver adgang til brugerinformationer ved hjælp af $current_user:

<?php global $current_user;
      get_currentuserinfo();

      echo 'Username: ' . $current_user->user_login . "\n";
      echo 'User email: ' . $current_user->user_email . "\n";
      echo 'User first name: ' . $current_user->user_firstname . "\n";
      echo 'User last name: ' . $current_user->user_lastname . "\n";
      echo 'User display name: ' . $current_user->display_name . "\n";
      echo 'User ID: ' . $current_user->ID . "\n";
?>

Så kan man tjekke om brugeren er logget ind:

<?php
require('./wp-blog-header.php');
?>

og



<?php
if (is_user_logged_in()){
    echo "You are logged in.";
}
else {
    echo "Please login.";
};
?>

Nøglen er den sidste kontrolstruktur. Her må man kunne gøre brug af CakePHP... eller videresende til passende CakePHP Views og CRUDs.

Selv administratorrollen kan påvises i WP via: is_admin(); 

Sådan: Cakephp og Ubuntu konfiguration

Når CakePHP installeres på en Ubuntu server, så forsvinder layoutet. Det skyldes problemer med konfigurationen af mod_rewrite. Opskrifterne på nettet er ikke altid komplette, så her er den opskrift, der (endelig) virker for mig på Ubuntu 10.04.



Download CakePHP og pak filerne ud, hvor du vil have din cakeroot, jeg bruger fx:

# /var/www/cake/
Husk at give læserettigheder og at tmp skal være skrivbar:
# sudo chmod -R 775  /var/www/cake
# sudo chmod -R 777 /var/www/cake/app/tmp

Først skal mod_rewrite aktiveres i apache, dette gøres i et terminalvindue:

# sudo a2enmod rewrite

Så skal filen /etc/apace2/sites-available/default rettes:

# sudo gedit /etc/apace2/sites-available/default

Tilføj disse linjer:

    <directory /var/www/cake/app/webroot>
        AllowOverride All
    </Directory>
    <Directory /var/www/cake>
        AllowOverride All
    </Directory>
    <directory /var/www/cake/app>
        AllowOverride All
    </Directory>

Måske burde man kunne nøjes med at give tilladelsen AllowOverride All i ../cake; men det virkede ikke på mit system. Til gengæld virker ovenstående.

Herefter skal Apache genstartes:

# sudo /etc/init.d/apache2 restart

 Nu mangler de sidste detaljer. På skærmbilledet kan man læse, at "security salt"skal ændres, og at oplysningerne om databasen skal være korrekte. Tilføj disse detaljer i ../cake/app/config/core.php (security salt). I samme directory omdøbes database.php.default til database.php. Filen skal rettes, således at databaseoplysningerne bliver korrekte:


class DATABASE_CONFIG {

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'user',
        'password' => 'password',
        'database' => 'database_name',
        'prefix' => '',
    );

    var $test = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'user',
        'password' => 'password',
        'database' => 'test_database_name',
        'prefix' => '',
    );
}

Tilbage står kun at tjekke om sagerne virker i en browser:

# firefox http://localhost/cake (bare for at være kontrær og initiere firefox fra et terminalvindue...)

19 June, 2011

Croogo cms til cakePHP

Croogo er et CMS udviklet til CakePHP. Det lyder jo forjættende, for opsætning af brugerrettigheder er en labyrint i CakePHP.  Derfor skulle det prøves. Installationen ødelagde en version af CakePHP, der ellers virkeke. Det kunne jeg ikke få den til igen, selv om jeg er begyndt at installere forfra hver gang noget går galt.

Tjah, det ligner en tendens. ... .. ... .. .....

 Croogo kommer med en masse fejlmeddelelser. CakePHP virker nogen gange på Ubuntu. Det kræver held ... hver gang. Det er mit klare indtryk, at hverken CakePHP eller Croogo er modne til andet end eksperimenter. Men hvis det en dag virker, så bliver det smart. Vejledningen til Croogo fortæller ikke præcist, hvordan man installerer. Mine gæt, eksperimenter og forsøg virkede i hvert fald ikke.

"Building PHP Applications" af Porebski m.fl. skriver at Crooga skal installeres i /cake/app - men det ser ud til at Crooga nu pakkes med en fuldstændig CakePHP. Hverken den ene eller den anden tilgang virker.

Nå, det var den aften. Jeg kommer ikke videre i dag, Frameworks kan være så bøvlede, at det ville være hurtigere at udvikle sin egen kode ....

Cakephp og Ubuntu - endnu engang

I konfigurationsfilen kan man fravælge "pretty urls" - filen /var/www/cake/app/config/core.php fortæller hele proceduren. Jeg omdøbte simpelt hen .htaccess til .htaccess.old - og slettede derefter .htaccess. 

/**
 * To configure CakePHP *not* to use mod_rewrite and to
 * use CakePHP pretty URLs, remove these .htaccess
 * files:
 *
 * /.htaccess
 * /app/.htaccess
 * /app/webroot/.htaccess
 *
 * And uncomment the App.baseUrl below:
 */
    Configure::write('App.baseUrl', env('SCRIPT_NAME'));

/**

---
Dagen efter virker denne opskrift ikke. CakePHP kan være en prøvelse.

06 June, 2011

Cakephp fra localhost til www server

Man kan ikke kopiere filerne direkte som de ligger på localhost. Sandsynligvis er løsningen at kopiere de individuelle filer med views, controllers etc. manuelt. Ikke just en "piece of cake" løsning (men sådan er det jo hver gang man prøver noget nyt med Cake).

"CakePHP aint piece of Cake"

Metoden med at kopiere views, models og controllere virkede. Derudover skulle:
  • Databasens opsætning konfigureres efter den nye server.
  • Core.php kopieres over fra localhost til server (salt-værdierne til kryptering skal være ens, ellers virker de Sha1 krypterede passwordstrenge ikke.
Og så virker CakePHP ellers ... http://multimusen.dk/cake/

24 May, 2011

Sådan: CakePHP på localhost Ubuntu

"Unreal" giver en opskrift her ... og den virker. Kort fortalt:


Først tjekkes om modulet rewrite er aktivt:

# sudo a2enmod rewrite



Så skal Apache vide, hvor webroot er:

# sudo pico /etc/apache2/sites-available/default



I filen tilføjes de manglende oplysninger:


<directory /var/www/app/webroot>
AllowOverride All
</Directory>

Apache genstartes herefter:

# sudo /etc/init.d/apache2 force-reload



Og herefter virker CakePHP på Ubuntu. Tak til bloggeren "Unreal" for opskriften. Så er der kage.

Prøv også denne grundige vejledning: http://bakery.cakephp.org/articles/BBBThunda/2010/02/25/troubleshooting-cakephp-installation-issues-related-to-apache-2-mod_rewrite-for-beginners

eller her:

http://book.cakephp.org/view/333/A-Note-on-mod_rewrite

Cakephp-instaweb serveren

Serveren starter men angiver en CGI-fejl. Droppes.

Note: Ubuntu og CakePHP

Denne artikel giver en opskrift med modifikationer i Apache. Artiklen slutter med disse ord (efter at ha indledt med hvor "piece of cake" det er at køre CakePHP):

"It took a little while to realise that the reason this was happening is that CakePHP's .htaccess files were being ignored by Apache. This turned out to be because Ubuntu's default Apache install includes the directive "AllowOverride none", effectively disabling mod_rewrite.
Opened the "000-default" site configuration file for editing.
1gksudo gedit /etc/apache2/sites-enabled/000-default
Then, change the "AllowOverride none" to "AllowOverride all" under the first two sections, "" and "".
Restart Apache and you should be good to go.
1sudo service apache2 restart"

(Næh, det virkede heller ikke.... jeg kan stadig ikke se siderne; men det her med Apache-konfigurationer fik mig til at lede i en anden retning, og det gav pote.)

23 May, 2011

Cakephp og Ubuntu

En blogger mener: "i resolved this - i had to add the directory listing to
/etc/apache2/sites-allowed/default then restart apache 2." Måske er det forklaringen på at man ikke har adgang til cakephp fra ubuntu.


Cake kan bage; men ikke ses i browseren.

CakePHP - Ubuntu opsætning

Har uden held brugt en formiddag på at prøve at få cakePHP til at køre på localhost.

Ubuntu  opsætning af "cake" - i tilfælde af: "Could not open input file: /usr/share/php/cake/console/cake.php"

# cd /usr/share/php/cake
# ln -s /var/www/cake/cake/console console

Standardopsætningen linker til en forkert mappe.

Husk at ændre:
Please change the value of 'Security.salt' in app/config/core.php 
Please change the value of 'Security.cipherSeed' in app/config/core.php 
Cake bager; men man kan ikke se siderne: "The requested URL /cake/posts was not found on this server."

Hold k... hvor er det besværligt. Bump!

Ja, når CakePHP kører er det så nemt. Når det ikke kører, så kører det ikke. Nu lader jeg det ligge en tid. Hvorfor skal det være så besværligt at lave noget der skulle gøre det let??

CakePHP - remember...

---------------------------------------------------------------
Created: asthmablog in /var/www/cake/app/NAMEOFAPPLICATION
---------------------------------------------------------------

Creating file /var/www/cake/app/asthmablog/views/pages/home.ctp
Wrote `/var/www/cake/app/asthmablog/views/pages/home.ctp`
Welcome page created
Random hash key created for 'Security.salt'
Random seed created for 'Security.cipherSeed'
CAKE_CORE_INCLUDE_PATH set to /usr/share/php in webroot/index.php
CAKE_CORE_INCLUDE_PATH set to /usr/share/php in webroot/test.php
Remember to check these value after moving to production server

Cake bake all kører; men siderne kan ikke ses fra localhost.... Jeg bliver vist aldrig gode venner med CakePHP...

CakePHP - missing tables

Slet alle controllers og models. Derefter cake bake...

22 May, 2011

Cakephp - kæmper med ACL

En ACL driller helt vildt. Kan man fjerne den? Valgte at slette databaserne; men så gik cake bake helt i sort. Genoprettede databaserne, men uden held. Cake er gået i sort. Hvordan kommer man videre?

Og igen ... tjah ... den givne tutorial fra CakePHP virkede heller ikke. De må altså gøre noget ved den dokumentation! Hver gang jeg har prøvet disse tutorials, så er der noget som ikke lige virker.

Jeg har ikke tal på hvor mange gange der har været nødvendigt at begynde helt forfra...  Som regel er det lettere at slette alt, for at finde en fejl i de lange koder er helt umuligt. Især når det er uklart, hvor man skal lede.

Suk ... CakePHP er ikke a "piece of cake". Og det irriterer mig grænseløst at læse, hvor "piece of cake" det her at ... [skriv noget] ... hvorefter den givne opskrift får cake til at gå i sort.

Nå: det gode er, at jeg efterhånden kan sætte sagerne op på 10 min... 

21 May, 2011

Jammen - CakePHP er jo hamrende smart...

Efter en frustrerende stejl indlæringskurve begynder visionen bag CakaPHP så småt at dæmre. Jeg bager og bager - og det er meget let at sætte sagerne op. Nogen gange tager jeg mig selv i at tænke:


- "Jammen, det er jo hamrende smart, det her..."

Og sådan kan pendulet svinge fra den ene side til den anden side. Jeg skal love for at "cake bake" kan fyre kodelinjer af: modeller, controllere, views, CRUDs og hvad ved jeg. Lige nu eksperimenterer jeg med at tildele brugergrupper rettigheder. Og så begynder det jo at ligne noget seriøst.

Cake bake ... AHA!

Efter mange, mange forsøg på at få "cake bake" til at fungere begyndte jeg at analysere fejlmeddelelserne. Tilsyneladende var stien forkert. Cake kunne ikke finde de rette filer.


PHP Fatal error:  ConnectionManager::getDataSource - Non-existent data source default in /web/petj/public_html/cake/cake/libs/model/connection_manager.php on line 102

Fatal error: ConnectionManager::getDataSource - Non-existent data source default in /web/petj/public_html/cake/cake/libs/model/connection_manager.php on line 102


Det viste sig, at man naturligvis skal stå i ~/cake/app/ og fra denne mappe eksekveres cake bake all så.
De ku de godt ha skrevet... (muligvis har jeg overset en detalje; men lad os bare se bort fra denne umulighed).

Men nu har jeg endelig fået åbnet "bageriet".

19 May, 2011

Exit Cake Bake

Jeg følger et kursus i webapplikationsudvikling, hvor vi er blevet introduceret til frameworket CakePHP, der skulle hjælpe os til at programmere større projekter hurtigt.

Det er særdeles vanskeligt at finde kodeeksempler, der virker, når man arbejder med CakePHP. Efterhånden har jeg brugt mange, mange timer på at få noget til at virke med Cake, der burde være dødsimpelt.

Lige nu prøver jeg at lave en log in ... hvilket er relativt simpelt med rå PHP / MySQL. Men med CakePHP er det en ørkenvandring af mislykkede forsøg.

Men dokumentationen er næsten altid mangelfuld - og den ORM, som skulle kunne bage koden er fyldt med fejl. CakePHP har sine skønheder; men så sandelig også alvorlige mangler.

Jeg mener stadig, at ideen med et framework er at lave kode hurtigt og let.

Cake bake
Det er så let at bage med cake bake, kan man læse; men min skærm bliver fyldt med fejlmeddelelser. Jeg har prøvet flere installationer, servere og databaser med samme resultat. Jeg har ellers set mange gøre det på nettet; men når jeg gentager det samme - med copy paste af koder og databaser, så virker det ikke. Der er altid lige et eller andet, der uheldigvis ikke virker. Det bliver man altså træt af.

Man kan spilde meget tid på et framework, og tid har jeg ikke. Så nu vil jeg kun bruge de dele der faktisk virker - altså virker for mig:

Ind til videre har jeg droppet følgende i CakePHP:
  • Auth - loginfunktioner
  • Cake bake
Men ret skal være ret, der er også gode ting:
  • Nemt at bruge data fra databaser
  • Scaffolding - hvor man i skitseform kan sætte tingene op.
    Evangelisternes Lyserøde Rosende Ord
    Artikler om CakePHP er næsten altid i det lyserøde felt. Alt beskrives som "easy" - og det er som en rød klud mod en tyr, når man har siddet i timevis uden at skidtet virker - eller med forklaringer, der er uforståelige opremsninger af 3-bogstavsforkortelser: ACO, ACL, ORM...

    Nej, jeg kan altså ikke tilslutte mig CakePHPs "evangelister". CakePHP er alt andet end "easy" ... og slet ikke når skærmen konstant fyldes af "PHP fatal error...." mig her og "PHP fatal error" mig der...

    Exit Cake Bake
    Efter at ha skrevet ovenstående tænkte jeg: "Det kan da ikke passe, at bake ikke virker. Jeg prøver lige igen..." Og det var spild af tid (igen). Selvfølgelig virkede bake heller ikke denne gang! For at være helt ærlig - nu gider jeg ikke bruge mere tid på "cake bake ..."

      03 May, 2011

      CakePHP - over åen efter vand?

      Når man arbejder med et framework kan selv de mest simple handlinger blive komplekse. Måske kommer gevinsten på lang sigt; men på den korte banehalvdel er det altså bøvlet at sætte sig ind i dette framework.

      Det er lidt som at gå over åen efter vand, når man skal pløje gennem lange tekster, der forklarer noget, der kunne være ordnet med en simpel SQL-sætning. Fx prøver jeg at sortere indlæg i en blog, så det nyeste vises først. Selv includes kræver mystiske og magiske metamanipulationer...

      Det burde være piece of cake; men den slags kræver virkelig en mental indsats, hvis man bruger CakePHP.

      Og løsningen på at sortere blogindlæg. Det er naturligvis ren kagemagi at skrive:

      # $posts = Set::sort($posts, '{n}.Posts.id', 'desc');

      Omvendt, når frameworkets idé dæmrer, så giver CakePHP en række redskaber, der dels giver systematik til udviklingen af webapplikationer og som dels gør det nemt at strukturere produktionen. Adgangen til databaser, relationer mellem tabeller og meget andet kan ordnes relativt enkelt.

      Men det kræver naturligvis, at man kan sin "kagebog".

      26 April, 2011

      CakePHP problem løst

      CakePHPs tutorial blog.

      Gennemførte en tutorial med en CakePHP blog. I dag var samtlige indlæg slettet, man kan ikke oprette nye indlæg og CakePHP viser denne fejl: "Error: The requested address '/' was not found on this server." På nettet har flere haft lignende problemer.
      Besluttede den noget drastiske kur: slet alt og upload igen. Få database og CakePHP til at spile sammen. Konfigurere CakePHP igen. Derefter tjekkedes modulerne for fejl. Eftersom "add" modulet ikke virkede, så var det logisk at prøve at rette netop denne fil. Og så virkede sagerne ellers.

      Fejlen ligger i filen, der skal tilføje nye poster; men filen virkede altså i går. En copy / paste løste problemet. Mystisk...

      Nu tager jeg en backup. Det gør jeg, igå.