Autor wpisu: Marek, dodany: 01.01.2013 20:26, tagi: php
W Ubuntu 12.04 w celu zainstalowania PHP CURL instalacja jedynie pakietów curl i php5-curl nie przynosi pożądanego rezultatu. Zakładając, że mamy już zainstalowany serwer WWW oraz PHP, należy zainstalować wszystkie poniższe pakiety:
- curl
- libcurl3
- libcurl3-dev
- php5-curl
czyli z konsoli:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
Autor wpisu: widmogrod, dodany: 28.12.2012 21:25, tagi: php
If you try to use phing to deploy your application on phpcloud.com and you encountered some problems with it here is why:
- no possibility to login via ssh
eg:
ssh someapp@someapp.my.phpcloud.com
returns:
Connection to someapp.my.phpcloud.com closed.
Transferred: sent 2848, received 2344 bytes, in 1.6 seconds
Bytes per second: sent 1754.5, received 1444.0
debug1: Exit status 1
- no possibility to run scp
eg:
scp -v text.txt someapp@someapp.my.phpcloud.com:/c.txt
which returns:
Transferred: sent 2544, received 2328 bytes, in 4.0 seconds
Bytes per second: sent 630.6, received 577.1
debug1: Exit status 128
lost connection
Only recommended way is to use sftp. So to do that in phing you should use scp taks, and vote for my pull request (https://github.com/phingofficial/phing/pull/176)
Or modify your phing taks to use php ssh.sftp wrapper as fallow:
// sometimes remote server allow only create files via sftp (eg phpcloud.com) if (false === $ret && $this->sftp) { // try create file via ssh2.sftp://file wrapper $fh = @fopen("ssh2.sftp://$this->sftp/$remoteEndpoint", 'w'); if (is_resource($fh)) { $ret = fwrite($fh, file_get_contents($localEndpoint)); fclose($fh); } }
Direct link: https://github.com/widmogrod/phing/commit/d2865095b4118d6c0bdca42d9f3a54b45224a48a
Autor wpisu: Jakub, dodany: 27.12.2012 22:58, tagi: apache, mysql, php
Instalacja wirtualnego serwera na systemie Ubuntu, jest trudniejsza niż w przypadku pospolitego Windows’a. Należy jednak pamiętać, że Linux o wiele lepiej spełni zadanie wirtualnej maszyny z wielu oczywistych przyczyn. A więc zaczynajmy: 1. Zaczynamy od upewniania się, czy nasze oprogramowanie jest w pełni aktualne:
1 | sudo apt-get update |
2. Następnie instalujemy fundament naszego serwera, czyli Apache:
1 | sudo apt-get install apache2 |
3. Teraz PHP:
1 | sudo apt-get install php5 |
Opcjonalnie, możemy jeszcze teraz doinstalować najważniejsze biblioteki PHP:
1234 | sudo apt-get install php-pear sudo apt-get install php5-xsl sudo apt-get install php5-gd sudo apt-get install php5-ming |
4. Baza danych MySQL:
1 | sudo apt-get install mysql-server |
Aby serwer MySQL był w pełni zintegrowany z PHP, musimy dołączyć jeszcze odpowiednie komponenty:
12 | sudo apt-get install libapache2-mod-auth-mysql sudo apt-get install php5-mysql |
5. Dla ułatwienia naszej pracy, warto doinstalować jeszcze phpMyAdmn. Wklejamy do konsoli:
1 | sudo apt-get install phpmyadmin |
I postępujemy zgodnie ze wskazówkami instalatora. Następnie wpisujemy komendę:
1 | sudo gedit /etc/apache2/apache2.conf |
Otworzy nam się pewien plik, na koniec którego doklejamy poniższą linijkę:
1 | Include /etc/phpmyadmin/apache.conf |
Zapisz i zamknij plik. Gratulację! Od teraz, masz w pełni działający serwer!
Autor wpisu: Śpiechu, dodany: 27.12.2012 16:13, tagi: php
Wpis może trochę stary tematyką, jednak podsumowujący co nieco z punktu widzenia mojej codziennej pięciomiesięcznej praktyki.
Czy potrzebujesz rozszerzać Smarty? Jeśli w twoich templatkach coraz więcej {assign}
, {math}
, {if 5|in_array:$object->getFeatureIds()}
, {$object->getPhotosLinks() assign="photos"}{$photos[0]}
, {assign var="values" value=$values|cat:'random shit here'}
itd. to wiedz, że coś się dzieje. Warstwa logiki niebezpiecznie wkrada się do warstwy prezentacji. Problemu jeszcze nie ma dopóki nie potrzebujesz przerzucać sporych części szablonów w różne miejsca i nikt nie musi kontynuować Twojej roboty. W pozostałych przypadkach natężenie frustracji kontynuatorów rośnie (jak to k… działa?, po ch… tu jest ta zmienna?) i tak soczyście dalej…
Plugins to the rescue!
W zasadzie w moich szablonach używam trzech rodzajów pluginów: modyfikatorów, funkcji i funkcji blokowych. Jest tego sporo więcej, jednak nie będę pisał o pozostałych.
Żeby korzystać z rozszerzeń należy najpierw wskazać Smarty gdzie ma szukać pluginów. Robi się to super prosto. Wystarczy w kodzie tworzącym instancję Smarty dodać
$smarty = new Smarty(); $smarty->addPluginsDir(__DIR__ . '/smarty_plugins'); // rest of initialization stuff
Druga rzecz to konwencja nazewnicza. Mam na myśli nazewnictwo funkcji i plików. Jeśli nie przestrzegamy konwencji, Smarty wywali błąd.
Modyfikator
Przeznaczenie: prosta modyfikacja tekstu. Nazwa pliku: modifier.nazwa_modyfikatora.php. Sygnatura funkcji: smarty_modifier_nazwa_modyfikatora($value, [$param1, $paramN]). Przykład:
/** * Modyfikator odwracajacy podany tekst, * opcjonalnie wrzucajacy jakis ciag pomiedzy znaki tekstu. * * @param string $value * @param string $separationChar * @return string */ function smarty_modifier_reverse_me($value, $separationChar = '') { $arrayString = preg_split('//u', $value, -1, PREG_SPLIT_NO_EMPTY); $reversedString = ''; for ($i = count($arrayString) - 1; $i >= 0; $i--) { $reversedString .= $arrayString[$i] . $separationChar; } return $reversedString; }
Użycie:
{'some text string'|reverse_me} {* gnirts txet emos *} {assign var='text_string' value='some text string'} {$text_string|reverse_me:'.'} {* g.n.i.r.t.s. .t.x.e.t. .e.m.o.s. *}
Funkcja
Przeznaczenie: zaawansowane generowanie treści do wyświetlenia. Nazwa pliku: function.nazwa_funkcji.php. Sygnatura funkcji: smarty_function_nazwa_funkcji(array $params, \Smarty_Internal_Template $template). Przykład:
/** * Funkcja zwracajaca biezacy czas w postaci ciagu 'dzien tygodnia, dd.mm.yyyy'. * * @param array $params * @param \Smarty_Internal_Template $smarty * @return string */ function smarty_function_get_localized_time_string(array $params, \Smarty_Internal_Template $template) { static $weekdays = ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota']; static $today = null; if ($today == null) { $today = new \DateTime(); } return "{$weekdays[$today->format('w')]}, {$today->format('d.m.Y')}"; }
Użycie:
{get_localized_time_string} {* Czwartek, 27.12.2012 *}
Funkcja blokowa
Przeznaczenie: otaczanie treści wygenerowanym ciągiem znaków. Nazwa pliku: block.nazwa_funkcji.php. Sygnatura funkcji: smarty_block_nazwa_funkcji(array $params, $content, \Smarty_Internal_Template $template, &$repeat). Przykład: