Setting up your local development environment – PHP

Posted July 3rd, 2010 in Tehnikalije by smottt

Last time we went through steps needed for setting up apache. Now we will set up PHP. At the time of writing, the current stable release is 5.2.13. Yes, I’m compiling 5.2.x branch of PHP, because 5.3.x is still not well adopted among hosting providers. I’ll describe how to run multiple PHP versions at some later tutorial.

Download and prepare

First few steps are practically the same as for the apache. Download the source and check md5.

md5sum php-5.2.13.tar.gz | grep cdf95cdc1ebccccce9c96653fd593dd4

Extract the archive.

tar xzf php-5.2.13.tar.gz

Go into the extracted directory.

cd php-5.2.13

Configure for compiling

./configure \
--prefix=/usr/local/php5.2.13 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php5.2.13/conf \
--enable-cli \
--with-pear=/usr/local/pear \
--with-openssl=/usr \
--with-iconv \
--with-curl \
--with-mysql \
--with-mysqli \
--enable-mbstring \
--enable-exif \
--with-jpeg-dir \
--with-zlib \
--with-zlib-dir \
--with-png-dir \
--with-gd \
--with-gettext \
--enable-gd-native-ttf \
--with-mhash \
--with-pspell \
--with-mcrypt \
--enable-bcmath \
--with-mime-magic \
--with-pdo-mysql \
--enable-sockets \
--enable-soap

You don’t need all of these extras, they just might be useful to you. Some of the more important ones are:

–prefix=… sets the location of the PHP installation.

–with-apxs2=… sets the location of the apxs binary of the apache. Adjust accordinally.

–with-config-file-path=… sets the location of the php.ini configuration file. I just set it so it is more clear where the .ini file will be.

–enable-cli wether or not you want to use php from the command line.

You can read more about the configuration options in the PHP manual.

http://php.net/manual/en/configure.php

Compile

make

If this error occures while doing “make” -> “/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status”, just install the libltdl-dev package. Should be something similar for other linux distributions.

sudo apt-get install libltdl-dev

It is a good practice to run tests and report any possible bugs by running this command. It however is not mandatory to run it.

make test

This might take a while. After tests are through, there might be a fail or two, so you can decide if you want to report those or not.

Let’s go on and install it. This command must be run as super user.

sudo make install

Configure

Now we have to copy the php.ini to appropriate directory.

sudo cp php.ini-recommended /usr/local/php5.2.13/conf/php.ini

Next, we configure apache to handle our PHP scripts.

sudo gedit /usr/local/apache2/conf/httpd.conf

Find a line which starts with AddType and add this below.

AddType application/x-httpd-php .php

Than in line which starts with DirectoryIndex add this.

index.php

Save the file and restart apache.

sudo /usr/local/apache2/bin/apachectl -k restart

Test

Go to your documents root directory. In previous tutorial we used /var/www directory for this.

In this directory create a file named test.php and put this in it:

<?php phpinfo(); ?>

Now go to http://localhost/test.php

If you see a lot of data about your PHP installation, you have succeeded.

Enjoy!

Update: This tutorial also applies for PHP 5.2.14.

./configure –prefix=/usr/local/php5.2.13 –with-apxs2=/usr/local/apache2/bin/apxs –with-config-file-path=/usr/local/php5.2.13/conf –enable-cli –with-pear=/usr/local/pear –with-openssl=/usr –with-iconv –with-curl –with-mysql –with-mysqli –enable-mbstring –enable-exif –with-jpeg-dir –with-zlib –with-zlib-dir –with-png-dir –with-gd –with-gettext –enable-gd-native-ttf –with-mhash –enable-ftp –with-pspell –with-mcrypt –enable-bcmath –with-mime-magic –with-pdo-mysql –enable-sockets –enable-soap

Setting up your local web development environment – Apache

Posted June 25th, 2010 in Tehnikalije by smottt

This is the first on in the series of tutorials on how to set up your local web development environment on linux (I’m using ubuntu). It is targeting those people, who don’t know their way around linux, but don’t want to use generic packages. It’s more fun. :)

Download and prepare

First, you go to the apache homepage. You download apache, check sha1, because it can get corrupted!

sha1sum httpd-2.2.15.tar.gz | grep ’1a751aab443ce76ede233b6d3351223e9c9516f2′

If a line is returned, the file is OK, we can proceed, else, return to step 1.

Extract the archive.

tar xzf httpd-2.2.15.tar.gz

Move into the directory of the extracted archive.

cd httpd-2.2.15.tar.gz

Configure for compiling

Next, we have to configure apache, before we compile it.

./configure –prefix=/usr/local/apache2 –enable-so –enable-mods-shared=all –enable-mod-rewrite

–prefix=/usr/local/apache2 tells apache where to install all the files needed. In this case we are installing apache to /usr/local/apache2 directory.

–enable-mods-shared=all tells apache to compile all modules as dynamic shared modules. We can then enable these modules in httpd.conf file, via the LoadModule directive.

–enable-mod-rewrite tells apache to enable mod rewrite.

Troubleshoot

If you get this error during the configuration:

mod_deflate has been requested but can not be built due to prerequisite failures

This happened because we enabled all mods by default, one of which is the mod_deflate that uses the zlib library. You can simply install its headers on ubuntu.

sudo apt-get install zlib1g-dev

The dependencies should pass.

Compile

make

Next one must be executed as super user.

sudo make install

Test it

Now, apache should be working. Let’s test it.

sudo /usr/local/apache2/bin/apachectl -k start

Go to: http://localhost

You should see a “It works!” on your screen.

But when we started apache, it threw out an error: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

Configure it

It’s time to configure it, so it won’t throw errors at us. You can use different text editor than gedit (vi, nano, mcedit … )

sudo gedit /usr/local/apache2/conf/httpd.conf

ServerAdmin -> change it to your email, just for a clean configuration file.

Uncomment ServerName directive (remove # in front of it) and change www.example.com to localhost. With this, we got rid of that error from before.

DocumentRoot -> change to directory in which you want to have your html, php etc. files.

<Directory “/usr/local/apache2/htdocs”> -> change if you changed the DocumentRoot in the previous step.

Here we must change the line AllowOverride None to AlloweOverride All if we want mod_rewrite to function properly.

Check if the syntax of the configuration file is OK.

/usr/local/apache2/bin/apachectl -t

If everything is OK, restart apache.

sudo /usr/local/apache2/bin/apachectl -k restart

You’re good to go!

Annoying Eclipse message about JavaHL on Ubuntu 10.04

Posted June 21st, 2010 in Tehnikalije by smottt

How to get rid of it?

First of, we need to install some libraries:

sudo apt-get install libsvn-java

Once this is done, we need to tell JVM (Java Virtual Machine) to include the path to our new libsvnjavahl-1.so file, when searching for extensions. We can do this in the eclipse configuration file. It is located inside the directory in which you installed Eclipse and is called eclipse.ini.

Find the line -vmargs and after it (in a new line) add this one:

-Djava.library.path=/usr/lib/jni

Restart Eclipse and you’re done.

This worked with Eclipse Galileo (3.5.2) and Ubuntu 10.04.

How to pin My Computer to Windows 7 taskbar directly

Posted February 20th, 2010 in Tehnikalije by smottt

Vedno me muči to vprašanje, ko nameščam W7. In moram vedno googlat, zato tale bolj personal note. Mogoče bo pa še komu prav prišlo. :)

1. Desni klik na mapco v taskbaru

2. Desni klik na Windows Explorer

3. Properties

4. V target polje vneseš naslednjo zadevo:

%SystemRoot%\explorer.exe /E,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}

That’s it. :)

Javascript kviz/test

Posted February 14th, 2010 in Tehnikalije by smottt

Misliš, da obvladaš JavaScript? Jaz ga sigurno ne, vsaj po rezultatu sodeč (9 odgovorov napačnih). :D

http://perfectionkills.com/javascript-quiz/

Nadležna sporočila v windows vista

Posted November 21st, 2008 in Tehnikalije by smottt

Kar precej nadležnih sporočil mi je grenilo življenje v zadnjem času. Pa nikoli nekako nisem imel časa se posvetit zadevi in razrešit problem. To se je sčasoma spremenilo, prilagam pa rešitve 3 nadležnim sporočilom, ki so me pestila. Imam angleško različico Vista Ultimate (ja, je original).

1. Nadležna ikona, ki izvira iz takoimenovanega Varnostnega središča in opozarja na to, da nimam antivirusa oz. imam samodejno posodabljanje izklopljeno. Rešitev je preprosta:

  1. Control Panel
  2. Security Center
  3. V levem stolpcu se nahaja povezava “Change the way Security Center alerts me”
  4. Izberete možnost, ki ni priporočena
  5. Voila! :)

2. Druga zadeva se ne tiče toliko viste same, kakor se tiče winampa in njegove želje po skeniranju USB pogonov, ki se priklopijo v sistem. Zmeraj znova in znova bi rad preskeniral USB ključek za medijskimi datotekami. Rešitev je malce skrita, pa vendar se vse najde:

  1. Options
  2. Preferences
  3. Plug-ins
  4. Portables
  5. Izberete ponavadi zadnji plugin, ki ima v imenu USB
  6. Uninstall

3. Vistina vgrajena zadeva za spremljanje stanja sistemskega pomnilnika lahko postane precej nadležna. Še posebno, če ste ravno sredi igre in vam vista postreže s sporočilom, da vašemu sistemu primanjkuje pomnilnika. Your computer is running low on memory. Rešitev je morda bolj preprosta, kot samo dokup pomnilnika.

  1. Desni klik na Computer
  2. Properties
  3. V levem stolpcu izberete Advanced System Settings
  4. Pod jezičkom Advanced v okviru Performance izberete Settings …
  5. Spet pod jezičkom Advanced v okviru Virtual memory izberete Change …
  6. Najverjetneje bodo vse nastavitve na 0, torej je priporočljivo zadevo zvišati na količina pomnilnika * 2.5 . Torej, če imate 1GB RAM – naj bo page file velik 2.5 GB.

Torej to je bilo par nasvetov, ki čisto lahko pridejo prav marsikomu :)

sitemap.txt.gz generator wordpress plugin

Posted October 27th, 2008 in Tehnikalije by smottt

Nekaj časa nazaj sem si namestil wordpress vtičnik, ki me obvešča o vseh 404 napakah na blogu. Mimogrede naj omenim, da je zadeva zelo priročna, še posebno, če si lastiš blog na lastni domeni/strežniku. Tako lahko zlahka preusmerjaš napačne povezave, slediš dogajanju, optimiziraš blog za iskalnike, odkriješ neželjene zadetke s strani botov in še in še.

No, da se vrnem nazaj k bistvu. Med vsemi napakami se je kar pogosto našel tudi zahtevek za datoteko sitemap.txt.gz s strani najdi.si webcrawlerja. Takrat mi je bilo jasno, da google potrebuje sitemap.xml, malo kasneje sem odkril tudi sitemap.xml.gz. Nisem pa še slišal za sitemap.txt.gz. Vendar stric google vse najde in po nekaj googlanja sem se seznanil tudi s tem. Sitemap.txt.gz je datoteka, ki vsebuje vse povezave na strani, vsako v svoji vrstici. Tako nekateri iskalniki stran lažje poindeksirajo. Tu pa se je pojavil nov problem. Obstaja malo morje sitemap.xml in sitemap.xml.gz generatorjev. Vendar zaenkrat še nisem zasledil generatorja za sitemap.txt.gz . Torej sem na hitro spisal php funkcijo, ki mi je zadevo zgenerirala iz obstoječe sitemap.xml. Ker pa to ni pripomoglo k praktičnosti in uporabnosti, je bilo treba zadevo spisati malo drugače, da bo zadovoljivo opravljala svoje delo v wordpress okolju in se ustrezn zaganjala ob posodobitvah.

Tako je nastal moj prvi wordpress plugin – sitemap.txt.gz generator. Ker bo mogoče zadeva prišla prav še komu, sem se odločil, da to javno objavim.

Zahteve: na žalost brez tega ne bo šlo :)

  1. zlib php extension
  2. simpleXML php extension
  3. obstoječi sitemap.xml

Namestitev: prekopiraš datoteko .php v mapo wp-content/plugins in ga v administratorju omogočiš. Priloženo datoteko sitemap.txt.gz skopiraš v primarno wordpress mapo. Torej tam, kjer se nahaja index.php in vse ostalo. Datoteka mora imeti pravice za pisanje – torej CHMOD 777. Če datoteka ne obstaja ali nima pravic za pisanje, se ne bo ustvarila/obnovila/posodobila. Na žalost poročil o napakah v tej različici še ni.

Uporaba: just let it run :) datoteka se bo preprosto posodobila ob naslednjih dogodkih:

  • vnos se ustvari in postane javen
  • status vnosa se spremeni iz zasebnega v javno
  • vnos je izbrisan
  • vnos se ustvari in postane javen preko mobilnega telefona
  • ustvari se nova stran

Download:

Prenos je možen na domači strani projekta. Trenutno še sploh nedodelana.

To je torej to. Zadeva se bo pojavila mogoče tudi na uradni strani vtičnikov wordpress. Ko in če mi bo uspelo najti čas in voljo za pisanje dokumentacije in vsega kar zraven spada. Zaenkrat pa sem odprt za predloge, kritike, bug reporte, karkoli kar bi pomagalo zadevo izboljšati ;)

Mastering PHP

Posted October 13th, 2008 in Tehnikalije by smottt

Opazi kdo kaj zanimivega? ;)

do
{
    $file = new file($imagePath . ‘/’);
    $file->rename($imageUploadedName);
    $imageUploadedName = $file->getNewName();
}
while(@file_exists($imagePath . ‘/’ . $imageUploadedName));

Poletna šola mobilne robotike 2008 – preostali dnevi

Posted September 10th, 2008 in Tehnikalije by smottt

Končno mi je uspelo najti čas za tale vnos. Najprej sem čakal, čakal in se načakal, preden sem dobil v roke fotke in filmozne posnetke. Ko pa sem jih končno imel, pa nekako ni bilo časa, volje, da bi zadevo spisal, uredil in objavil. Sicer pa šlo je nekako takole:

Kot že rečeno smo bili precej napredna skupina, kot se lahko prebere tudi v prilogi Vikend iz dobrega tedna nazaj. Mimogrede – podal sem izjavo o tem kaj in kako se dogaja na šoli in nekaj mojih stališč glede robotike in robotov na splošno. Na koncu pa:

Seveda pa je kot vedno bilo materiala več, kot prostora.

Razumljivo in hvala Tini, da me je kontaktirala.

Pa se vrnimo k naši šoli robotike. Ko nam je uspelo usposobiti vodenje robota s tipkovnico preko bluetooth vmesnika in smo uspešno izvedli tekmovanje pobiranja žogic iz poligona, smo bili pripravljeni zagristi v naslednji izziv. Pripraviti robota, da bo optimalno – torej najhitreje in čimveč – pobral žogice ter jih odpeljal, odnesel, vrgel ven iz poligona. Vse avtomatsko, preko senzorja – kamere – in bluetooth vmesnika. Moram reči, da sva z Marekom pretežno lenarila ter se ukvarjala z vsem drugim, samo s kodo ne prvi dan. Drugi so medtem že izumili marsikaj. Tako so sicer bili v precejšnji prednosti, vendar nama je z malo truda uspelo do začetka tekmovanja na zadnji dan vse nadoknaditi in pobrati svojih 9 žogic v vsaki tekmi. Ni vedno vse v kodi, precej precej je tudi v sami zgradbi robota. Kolikor se ti da z njo pač ukvarjati. Sam raje programiram, kakor sestavljam kocke :)

Pravila tekmovanja, potek in pa rezultate si lahko ogledate na spodnjih fotkah.

Med drugim je tudi opaziti nekaj fotk iz fischertehnik zadev. Gre za pomanjšane proizvodne procese, ki so sprogramirani v različnih okoljih. Precej zanimiva pa je tudi cena. Okoli 3000 eur. Za komplet fischertehnik gradnikov in škatlico, ki vse skupaj poganja.

Na predzadnji dan je bilo tudi kar precej pestro. Odpravili smo se na celodnevno ekskurzijo v Velenje. Tu so nas z odprtimi rokami pričakali v Gorenju. Predstavili informacijsko infrastrukturo, potek proizvodnje in nenazadnje vse tudi v živo pokazali preko vodiča. Pohvalno. Mogoče še najbolj so nam bile všeč modre lučke, ki smo jih dobili v dar. Saj so nekaterim precej dobro služile pri spustu v dvigalu v globino Muzeja premogovništva Velenje. Dobrih 180m pod zemljo se nahaja zadeva. Ogled je precej zrežiran in naj bi obiskovalcu dal kar najboljši možen vtis o rudarskem življenju. Meni je bila najbolj všeč malica. Sicer pa pohvalno in precej zanimivo. Na koncu smo si še ogledali eno izmed treh jezer, ki so nastala zaradi rudarske dejavnosti in malo uživali v senci in miru. Nato smo se odpravili proti domu, najbolj zagrizeni pa so lahko šli v laboratorij nadgrajevat svoje robotke.

Cvetke:

Bodoči sošolec je sestavil robota, ki je hodil. Poleg tega tudi robot-katapult, ki je žogice metal v zrak. Nenazadnje največji spektakel pa je bil njegov robot – PATRIJA. Vse to in še več na fotkah, posnetki pa pridejo v naslednjih dneh :)

Posodobitev na wordpress 2.6.2

Posted September 9th, 2008 in Tehnikalije by smottt

Danes zjutraj sem opazil, da je na voljo novi wordpress. In sicer v različici 2.6.2. S temle trenutkom je postal moj blog varnejši in bolj zmogljiv. Posodobitev je potekal presenetljivo hitro in brez zapletov. Morda pa tutdi najhitrejša do zdaj. Vse posodobitve si lahko ogledate v TRAC sistemu. Če pa je kdo bolj tehnični tip oz. bolj radovedne sorte, pa si lahko ogleda tudi dejanske spremembe v kodi. Kar seveda orodje, kot je trac, lepo omogoča.

Če še kdo ni nadgradil, vsekakor toplo priporočam čimprejšnjo nadgradnjo!