Showing posts with label php. Show all posts
Showing posts with label php. Show all posts

Saturday, December 1, 2012

ISPConfig + NginX + PHP-FPM + multiple PHP versions

This article is about setting up multiple PHP versions with PHP-FPM with nginx. Basically, its a note for myself, but maybe you can also use it. When this article was written, the stable PHP version was 5.4.9, so I will use that here.

It's a testing configuration, there might be security bugs, so don't use it in production!

This article is based on Ondřej Šimek's article.

So first of all, we need the actual PHP stable version, download it, unzip it, and copy it to /usr/local/src. After PHP 5.4.0, you don't need to patch. (if you need previous version, use Ondřej Šimek's tutorial for patching)

wget http://www.php.net/get/php-5.4.9.tar.gz/from/a/mirror
tar xjf php-5.4.9.tar.gz

mkdir /usr/local/src/php
mkdir /usr/local/src/php/5.4.9
mv php-5.4.9 /usr/local/src/5.4.9

Next, we need to run ./configure, and compile it. I like to install php separately to /opt/php/5.4.9

mkdir /opt/php
mkdir /opt/php/5.4.9

So run ./configure with the choosen options. You need at least these:
--prefix=/opt/php/5.4.9
--enable-fpm
(--enable-fastcgi)
--without-pear

./configure --prefix=/opt/php/5.4.9 --enable-fpm --without-pear

You may or may not need to use --enable-fastcgi, it depends on the php-version, as I can remember, since 5.3.0 you don't need to use, because it's a must-have option.

After running configure, run:

make & make install

It will create some files in /opt/php/5.4.9. You may need to copy the recommended php.ini from the source folder:

cp /usr/local/src/php-ini-production /opt/php/5.4.9

Now, you need to change some configurations in the inis:

nano /opt/php/5.4.9/etc/php-fpm

ISPConfig uses listen port 9000, so you need to change it, to for example: 9001. You may want to set up logging, you can find several lines and settings about logging, its not hard to find.

Now, you can start php-fpm:

./opt/php/5.4.9/sbin/php-fpm

Next, go to your admin panel (ISPConfig), go to System, and additional PHP versions (only available in ISPConfig 3.0.5!). Create a new php version:

FastCGI settings:
Binary: /opt/php/5.4.9/bin
PHP.ini directory: /opt/php/5.4.9

PHP-FPM settings:
init-script: /opt/php/5.4.9/etc
PHP.ini directory: /opt/php/5.4.9/
POOL directory: /opt/php/5.4.9

Save it, then go to websites, and change PHP-version where you need. It will throw a ,,Bad Gateway" error,  because you didn't edit the nginx settings:

cd /etc/nginx/sites-available
nano yoursite.vhost

Then change the listen port to the port you defined earlier.

fastcgi_pass 127.0.0.1:9001

At the and: reload nginx and hurray.

/etc/init.d/nginx reload

HURRAY

Now, I have to figure out how to automatise the port change in the .vhost files.. 




Sunday, September 30, 2012

Gentoo: Apache does not interpreting PHP

If you use Gentoo/CentOS with Apache2 and PHP, and PHP is not interpreted, you should do the followings:

Open Apache2's configurations:
nano /etc/conf.d/apache2

Change the line:
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5 -D USERDIR"

After changing the line, don't forget to restart Apache:
/etc/init.d/apache2 restart

Now it should work!

Wednesday, August 1, 2012

Asterisk telepítés Debian-ra

Asterisk:


Az Asterisk egy ingyenes, open-source kommunikációs szoftver, főként Linux operációs rendszerekre. További információ található a hivatalos oldalon.

Az Asterisk-et kétféle módon telepíthetjük:


1. Telepítjük a csomagkezelő által felajánlott verziót. A csomagkezelő oldalán találhatunk információkat az éppen aktuális verzióról. A cikk írásakor a támogatott verzió az 1.6 volt, mely már egy kicsit elavultnak tekinthető, de ha valaki most ismerkedik a rendszerrel, annak tökéletes lehet, hiszen nem megy el idő a telepítési bajlódással. A telepítési fázisok itt érhetőek el.

2. Letöltjük a forráskódot és lefordítjuk a gépünkön. Ez egy kicsit több időt vesz igénybe, de éles rendszernél mindenképpen ajánlott kiválaszthatjuk, hogy milyen csomagokat (pl. codec-eket, és egyéb szolgáltatásokat) szeretnénk telepíteni, így csökkentve az erőforrás használatot. A telepítési fázisok itt érhetőek el.

Érdemes megemlíteni, hogy létezik egy FreePBX nevű eszköz, melyet egy telepített Asterisk-es rendszerhez kell kötnünk. Ez egy remek eszköz a rendszer monitorozására, illetve menedzselésére. A FreePBX telepítésére itt olvashatsz bővebben.



FreePBX telepítés Debian-ra

A FreePBX nem más, mint egy GUI az Asterisk vezérléséhez. Ha gyakran kell állítani a rendszeren, érdemes használni, hiszen nem kell a .conf fájlokban turkálni. Emellett elég sok adatot képes megjeleníteni a rendszerről: felhasználók, terhelés, elérhető frissítések, stb. .

A telepítése roppant egyszerű, szükséges hozzá PHP5, és MySQL. Állítólag a PHP5.4-et nem igazán kedveli, nekem nem volt vele problémám.

Letöltés/előkészítés:


Telepítsük a PHP-t, és MySQL-t:

apt-get install php5-mysql libapache2-mod-php5 mysql-server php-db php5-gd php-pear

Váltsunk a tmp mappába:
cd /tmp

Töltsük le az épp használatos verziót, jelenleg ezek közül lehet ávlasztnai:
A 2.9-es csak 1.8 ig támogatja az Asterisket!

wget http://mirror.freepbx.org/freepbx-2.9.0.tar.gz
wget http://mirror.freepbx.org/freepbx-2.10.0.tar.gz

Váltsunk az src mappába, csomagoljuk ki, és lépjünk bele:

cd /usr/src
tar xvfz /tmp/freepbx-2.10.0.tar.gz 
cd freepbx-2.10.0

Készítsük elő a MYSQL adatbázisokat:

mysql -u root -p
create database asterisk;
create database asteriskcdrdb;


GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; flush privileges; 
quit

Töltsük be a szükséges SQL táblákat:

mysql -u root -p asterisk < SQL/newinstall.sql 
mysql -u root -p asteriskcdrdb < SQL/cdr_mysql_table.sql

Szükséges felhasználó létrehozása

groupadd asterisk
useradd -c "PBX asterisk" -d /var/lib/asterisk -g asterisk asterisk
passwd asterisk


Ha még nem lennének meg a könyvtárak, akkor hozzuk létre:

mkdir /var/run/asterisk
chown asterisk:asterisk /var/run/asterisk


Adjuk hozzá az asterisk usert a www-data csoporthoz:

nano /etc/group
www-data:x:33:asterisk
(f2-vel tudsz menteni és bezárni)

nano /etc/apache2/apache2.conf
(ctrl+w- vel tudsz keresni)

Most be kell állítani, hogy az Apache az asterisk user nevében fusson:
Cseréld le a következő sorokat:
User www-data
Group www-data
erre:
User asterisk
Group asterisk

(Lehet, hogy a User és Group után valami $-os szöveg van, azt törölheted, de a legegyszerűbb ha simán kommenteled(#).

chown -R asterisk /var/lib/php5

Változtassuk meg a php.ini beállításait, kicsit ki kell bővíteni:

nano /etc/php5/apache2/php.ini
upload_max_filesize = 32M
max_execution_time = 120
max_input_time = 120


Fontos, hogy a telepítés megkezdése előtt mindenképpen készítsünk biztonsági mentést a modules.conf fájlról!

cp /etc/asterisk/modules.conf ~/asterisk-modules.conf


Telepítő elindítása:


./install_amp
A telepítő menet közben meg fog kérdezni néhány dolgot, a többségét hagyhatjuk alapbeállításon, egyedül az IP címet érdemes megváltoztatni, illetve a telepítés helyét. A telepítés helyénél figyeljünk arra, hogy a /var/www/mappanev helyre kerüljön, ha ezen belül egy almappába kerül, akkor még szöszölni kell vele.


Bug:
Előfordul, hogy Asterisk telepítésénél a ,,make sample" módot választjuk, ekkor legenerálja a sok .config fájlt, amire szükségünk lesz, és default beállításokkal szolgál. Viszont ezen verzió telepítője szépen kihagy néhány fájlt, ezért pl.: FreePBX nem képes csatlakozni Asterisk-hez (Asterisk nem képes feldolgozni a manager.conf fájlt). A FreePBX-es problémát a következő képpen tudjuk megoldani:

nano /etc/asterisk/manager.conf

A fájl végén látunk két include-ot (# az elején). Ezeket a fájlokat elfelejti létrehozni, ezért vagy hozzuk létre, vagy ;-vel kommentezzük ki. A fájlok tartalma nem létfontosságú, csak a szeparálhatóság végett fontos.


nano /etc/asterisk/sip.conf


A fájl végéhez adjuk hozzá:
#include sip_additional.conf


Ha minden jól ment, akkor kész a GUI, valami ilyesmit kéne kapni:






Thursday, January 19, 2012

PHP Image Class

English:
A class written in php for manipulating image files. It has a lot of features such as:

  • resize
  • crop
  • rotate
  • watermark
  • mostly all of php's build in filters
  • some special algorythms like blur, noise, duotone, etc..
  • convert images between file extensions
It's ready to be used in MVC frameworks or in simple websites. For more informations please read readme.txt in downloads.

Download

Hun:
PHP osztály képek egyszerű kezelésére sok funkcióval mint például:
  • átméretezés
  • vágás
  • forgatás
  • vízjel
  • szinte az összes php-ba beépített filter
  • egyéb algoritmusok mint pl.: blur, duotone, zaj, stb...
  • Fájl formátumok közti váltás
Az osztály használható akár MVC framework-ökben, akár egyszerű weblapoknak, egyéb információk megtalálhatóak a readme.txt fájlban a letöltések között.

Thursday, December 1, 2011

PHP fejlesztőkörnyezet kialakítása


Webes fejlesztőkörnyezet kialakítása


1. Lépés:

Egyszerű HTML– CSS – JS oldalak fejlesztéséhez nem feltétlenül van szükségünk fejlesztőkörnyezet kialakítására, hiszen a legtöbb böngésző önmagában is képes a helyben tárolt tartalom megjelenítésére,  viszont php futtatásához már más programokra is szükségünk lesz.

Szükségünk van egy webszerverre, amely a kliensektől érkező kéréseket szolgálja ki, általában Apache (Linux vagy Windows), vagy IIS (Windows) nevű kiszolgálókat szoktuk alkalmazni,  éles rendszereknél PHP-hoz általában Linuxon futó Apache -ot szoktak használni, de gond nélkül lehet használni IIS-t (Internet Information Services) is, ha nem csak PHP-t szeretnénk futtatni (IIS-t inkább ASP.NET –es oldalak hosztolására használnak Windows Server-eken).


Ha helyi gépen szeretnénk fejleszteni, és nem szeretnénk vacakolni a PHP, MySQL, Apache beállításával, vagy nem értünk hozzá, akkor letölthetünk egy kompakt csomagot, mely tartalmazza  a fejlesztéshez létfontosságú  eszközöket:

  •           Apache webszervert
  •           PHP futtatásához szükséges értelmezőt
  •           MySQL adatbázismotort

és egyéb eszközöket (ftp szerver, Perl). Ez a csomag mind Windows-ra, mind Linuxra letölthető, de vigyázunk, éles rendszerbe soha ne használjuk, mert biztonsági rések lehetnek benne, ezt a csomagot tipikusan fejlesztésre szánták.

A program neve XAMPP (X: Windows/Linux, A: Apache, M: MySQL, P: PHP, P:Perl), ebben a posztban ennek a telepítését, beállítását mutatom meg Linuxra és Windowsra. Természetesen használhatunk IIS-t is, ezt Windows 7  Professional +  operációs rendszerekhez jár ingyenesen. Telepítéséről és konfigurálásáról ITT lehet olvasni.

XAMPP telepítése Windows rendszerekre:

1.       Töltsük le a http://www.apachefriends.org/en/xampp.html –ról a megfelelő telepítőt.
2.       Indítsuk el a telepítőt: hagyhatunk mindent alapállapotban.
3.       Ha kész a telepítés, és nem indult el magától a control panel, akkor indítsuk el. Ez egy egyszerű és kényelmes kezelőfelület a szolgáltatások beállításához , ki –és bekapcsolásához. Mire jók  a szolgáltatások?
o   Apache: webszerver, php értelmező telepítve van hozzá
o   MySQL: adatbázis motor
o   FileZilla: FTP szerver és kliens
o   Mercury: levelező szerver
o   Tomcat:  Java Servlet és a JavaServer Pages megjelenítéséhez

Ha csak PHP-t szeretnénk használni, akkor elegendő, ha az Apache-ot indítjuk a ,,start” gomb megnyomásával.

Előfordul, hogy nem indul el, vagy a start megnyomása után, néhány másodpercig úgy tűnik, hogy elindult, aztán mégsem. Ez a szerver a 80-as portot használja, így azokat a programokat amik szintén ezt használják le kell állítani, tipikusan ilyen a Skype (de a Skype beállításainál meg lehet változtatni a port számot, így nem ütközik a kettő). Ha esetleg mégis gond lenne, és sehogy sem akar elindulni, akkor megváltoztathatjuk a portot, amit az Apache használ, ilyenkor viszont a böngészőnkben a következő címet kell beírni:

http://localhost:portszam

Tesztelés: Ha nem változtattunk az alap telepítési beállításokon, akkor a C:\xampp könyvtárba települt. Keressük meg a  ,,htdocs”  mappát, általában web szervereknél ez a mappa jelöli a megjelenítendő fájlok mappáját. Nyissuk meg, és hozzunk létre benne egy mappát. A mappában hozzunk létre egy szöveges fájlt, majd nevezzük át index.php-ra. és a tartalma legyen a következő:

 <?php  
      phpinfo();  
 ?>  

Ebben a kódrészletben meghívjuk a phpinfo() függvényt, mely az oldal megnyitásakor lefut, és különböző információkat ad a telepített php-ról. Mentsük el és zárjuk be a fájlt! Nyissuk meg a kedvenc böngészőnket és írjuk be az URL helyére: „http://localhost/mappaneve/index.php”, ha mindent jól csináltunk, akkor kapunk egy igen nagy táblázatot, ahol a telepített php beállításait látjuk, illetve a telepített bővítményeket. Ha ez megjelent, akkor a telepítés sikeres volt, a rendszer elvileg gond nélkül tud php kódot értelmezni.


2. Lépés:

PHP fejlesztés során szükségünk van egy szerkesztő programra, egyszerű, néhány soros oldalakhoz elég akár egy notedpad, de bonyolultabb programok írásakor sokat segíthet egy olyan program, mely áttekinthetővé teszi a kódot. Ezeknek a programoknak a száma végtelen, íme néhány:

Notepad++ : *
Kicsit komolyabb szövegszerkesztő mint a beépített notepad, tud sorokat számozni, illetve képes a különböző szintaktikai elemek színezésére. 1-2 fájlból álló oldalakhoz elég lehet, de minél több fájlból áll az oldal, annál nehezebb lesz átlátni.

Adobe Dreamweaver ***
Az Adobe cég  web fejlesztésre szánt programja, gyorsan meg lehet tanulni a használatát, megbízható, van benne ftp szerver, svn –re tud kapcsolódni, viszont code hinteket nehéz beállítni benne.

PHPDesigner ****
Hasonló a dreaweaverhez, egy kicsit bonyolultabb, viszont kiváló benne a code hinting, hátránya hogy az ftp nehezen beállítható.

NetBeans ***
Ingyenesen letölthető, php mellett számos nyelven lehet programozni benne (java, c, c++).

CodeLobster *****
Az alap verzió ingyenesen letölthető (email-ben kell serialt igényelni, de azonnal megjön), csak a bővítményekért kell fizetni (különböző cms-ek, sql szerverek -re való fejlesztést segítik ezek a kiegészítők, így nincs rájuk szükségünk). Telepítéskor vigyázzunk, hogy a plugin-eket ne pipáljuk ki, különben nem fogadja el az ingyenes serialt.

Google segítségével még n+1 darab ilyen programot találhatunk, illetve a későbbiekben is nagyon nagy segítséget tud nyújtani, ha valamilyen problémába ütközünk.

Ha sikerült telepítenünk a PHP futtatásához szükséges eszközöket, és rendelkezünk egy megfelelő szerkesztővel, akkor készen állunk webes tanulmányaink elkezdéséhez.

Wednesday, October 26, 2011

CodeIgniter: tank_auth vs. dx_auth


Welcome!
This post is about codeigniter php frameworks's 2 most used authentication systems, tank and dx auth.


Dx_auth was written by Erick Hartanto and it's based on CL Auth 0.2.5 beta developed by Jason Ashdown. Tank_auth is based on dx_auth, it was written by Ilya Konyukhov.

In both of them you can get the basic authentication features such as login, logout, register, and you can also find optionally CAPTCHA (or reCAPTCHA).





So what are the main differences?



In dx_auth there's a simple admin panel, you can create your own roles with custom permissions. However in tank_auth there are no roles and there's no admin panel, but in my opinion it's not a big problem, you can easily write an admin panel or integrate the roles.

If you want to use CI 2.0 or above, as I recognised, dx_auth is not completely compatible, you have to change the class names in each file from Classname to CI_Classname.

If you have to choose between these two, or other auth systems, I advise to use tank_auth. Dx_auth's role system is not very well designed, there can be security issues, and it uses more tables in database for not usable reason (for most of the  times). It's also not a good choice to avoid DoS and bot attacks, since it uses IP restriction instead of username and IP restriction.


If you are intrested, you can read an all-in comparison of all the authentication systems here.