Apache2 php5 -- Забрана на системни функции

Идеята е много проста ако някои  качи web shell на машината да не може да го ползва.

Ето го решението със suhosin:

File /etc/php5/apache2/conf.d/suhosin.ini

suhosin.executor.func.blacklist =system, exec, shell_exec, passthru,  ini_alter, dl, pfsockopen, openlog, syslog, readlink, symlink, link, leak, fsockopen, popen, escapeshellcmd, apache_child_terminate apache_get_modules, apache_get_version, apache_getenv, apache_note,apache_setenv,virtual

С php5 (Във virtualhost или в целия apache2.conf):

<IfModule mod_php5.c>
php_admin_flag safe_mode on
php_admin_value disable_functions "system, exec, shell_exec, passthru , ini_alter, dl, pfsockopen, openlog, syslog, readlink, symlink, link, leak, fsockopen, popen, escapeshellcmd, apache_child_terminate apache_get_modules, apache_get_version, apache_getenv, apache_note,apache_setenv,virtual"

</IfModule>

Аз лично ползвам вариант 1

PS:
Като цяло е добре да се добави и "set_time_limit", но не съм го добавил защото wordpress го ползва и ако има такъв сайт няма да може да обновява постовете си.

Премахнах и error_log, че : "[Wed May 30 22:04:51 2012] [error] [client xxx.xxx.xxx.xxx] PHP Warning:  error_log() has been disabled for security reasons in /path/file.php on line 306, referer: http://site.com"

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

OpenCart Shit

Opencart имат "Супер" DB структура и по- точно полетата "key" и "group"

mysql> describe oc_setting;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| setting_id | int(11)     | NO   | PRI | NULL    | auto_increment |
| store_id   | int(11)     | NO   |     | 0       |                |
| group      | varchar(32) | NO   |     | NULL    |                |
| key        | varchar(64) | NO   |     |         |                |
| value      | text        | NO   |     | NULL    |                |
| serialized | tinyint(1)  | NO   |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

Готино а ?

Проблема тук е следния, че в магазина на OpenCart е добавен Български език само на FrontEnd без админ панела, а един колега е сетнал Български език и за админ панела. При това положение излиза следната грешка:

"Notice: Error: Could not load language bulgarian! in /…/public_html/shop/system/library/language.php on line 39"

Е решението е да се фиксне в базата както аз направих:

update oc_setting set value='en' where setting_id=24303;

PS: Поста е как да се фиксне тази грешка, но не се стърпях да напиша колко "добре" са подбрани имената на колоните в таблицата oc_setting

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

WordPress Multisite Бележки

Готини плъгини за  WordPress Multisite е:

1. Multisite Plugin Manager
2. Hyper Cache Extended . Подкрепете Българаското. На адаша Мартин!
3. Diamond MultiSite Widgets
4. All in One SEO Pack
5. Akismet
6. Yet Another Related Posts Plugin
7. SEO Smart Links

За наспамени блогове от коментари могат да се премахнат лесно така:

delete from zna_comments where comment_approved!=1;
delete from zna_1_comments where comment_approved!=1;
delete from zna_2_comments where comment_approved!=1;
delete from zna_3_comments where comment_approved!=1;

Ако ПРЕКАЛЕНО много са наспамени т.е. 100% така:
delete from wp_comments;
delete from zna_1_comments;
delete from zna_2_comments;
delete from zna_3_comments;

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Добавяне на коментари от facebook на сайта

Идеята е да се ползва системата за коментари на facebook:

1. Създава се приложение за коментари:

http://www.facebook.com/developers/createapp.php

App Display Name: example_comments

App Domain:example.com

Website-> Site URL: http://example.com

http://developers.facebook.com/tools/comments?id=191130727657303

2. Взима се кода

http://developers.facebook.com/docs/reference/plugins/comments/

<div id='fb-root'></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = '//connect.facebook.net/bg_BG/all.js#xfbml=1&appId=365185030181491';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class='fb-comments' data-href='http://firmi1.com' data-num-posts='2' data-width='640'></div>

3. Слага се и друг код

<meta property='fb:admins' content='100000589059407' />
<meta property='fb:app_id' content='365185030181433' />

$url="http://example.com/haha/url";
echo "
<br><br><b>Коментирай свободно:</b>
<br><br>";
get_facebook_comment($url,510);

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Автоматично обновяване на 10 WordPress блога за 10 секунди

Идеята е, че трябва да се обновят 10 блога на WordPress и то бързичко с идеята при следващ ъпдейт да става лесно.
Понеже системата е писана на php реших и скриптчет ода бъде на php . Ето го и него:

<?php
#############################################
$wordpress_root_dirs=array(
"/var/www/sait1.com/",
"/var/www/sait2.com/",
"/var/www/sait3.com/",
"/var/www/sait4.com/",
"/var/www/sait5.com/",
"/var/www/sait6.com/",
"/var/www/sait7.com/",
"/var/www/sait8.com/",
"/var/www/sait9.com/",
"/var/www/sait10.com/"
);

$BDIR="/tmp/backup_upgraded_wordpress";
$NDIR="$BDIR/latest_wordpress_files";

#############################################

function dhs_lr_str($a,$b,$c){$a=explode("$a",$c);$b=explode("$b",$a[1]);return addslashes(trim($b[0]));};
$count_wp_blogs=count($wordpress_root_dirs)-1;

@system("mkdir -p $NDIR");
chdir("$NDIR");

echo "
###########################################################################
######## Mass Wordpress Updater ver. 0.1 by amri -- www.mpetrov.net ########
###########################################################################
\n";

echo "Downloading Latest WordPress … \n";
system("wget -q http://wordpress.org/latest.zip -O $NDIR/latest.zip");
system("unzip -o -q $NDIR/latest.zip");

$count_upd_wp=0;
foreach ($wordpress_root_dirs as $RDIR)
{
$count_upd_wp++;
echo "Update Wordpress blogs $count_upd_wp/$count_wp_blogs\n";

$buf=file_get_contents("$RDIR/wp-config.php");

$DB_NAME=trim(dhs_lr_str("define('DB_NAME', '","'",$buf));
$DB_USER=trim(dhs_lr_str("define('DB_USER', '","'",$buf));
$DB_PASSWORD=trim(dhs_lr_str("define('DB_PASSWORD', '","'",$buf));
$DB_HOST=trim(dhs_lr_str("define('DB_HOST', '","'",$buf));
$DB_TABLE=trim(dhs_lr_str('$table_prefix  = \","'",$buf));
$WDIR="$BDIR/$DB_NAME";

@system("mkdir -p $WDIR");
chdir("$WDIR");

echo "Backup Old WordPress ($RDIR) DB: $DB_NAME\n";
system("mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $WDIR/$DB_NAME.sql");

echo "Backup Old WordPress ($RDIR) Files\n";
system("cp -Rp $RDIR/ $WDIR/wordress_files/");

echo "Replace Old WordPress($RDIR) Files\n";
system("cp -ar $NDIR/wordpress/* $RDIR/");

mysql_connect($DB_HOST,$DB_USER,$DB_PASSWORD);mysql_select_db($DB_NAME);
$result = mysql_query("select option_value from ".$DB_TABLE."options where option_name='siteurl'");
$row = mysql_fetch_array($result);
$siteurl=stripslashes($row['option_value']);

$ch1=curl_init();
curl_setopt($ch1,CURLOPT_URL,"$siteurl/wp-admin/upgrade.php?step=1&backto=");
curl_setopt($ch1,CURLOPT_RETURNTRANSFER,1);
$buf=curl_exec($ch1);
curl_close($ch1);
};
?>

Изходът е ето това:

###########################################################################
######## Mass WordPress Updater ver. 0.1 by amri -- www.mpetrov.net ########
###########################################################################

Downloading Latest WordPress …
Update WordPress blogs 1/12
Backup Old WordPress (/var/www/sait1.com/) DB: sait1DB
Backup Old WordPress (/var/www/sait1.com/) Files
Replace Old WordPress(/var/www/sait1.com/) Files
Update WordPress blogs 2/12
Backup Old WordPress (/var/www/sait2.com/) DB: sait2DB
Backup Old WordPress (/var/www/sait2.com/) Files
Replace Old WordPress(/var/www/sait2.com/) Files
Update WordPress blogs 3/12
Backup Old WordPress (/var/www/sait3.com/) DB: sait3DB
Backup Old WordPress (/var/www/sait3.com/) Files
Replace Old WordPress(/var/www/sait3.com/) Files
….

Може да го изтеглите от тук: wordpress_mass_upgrade

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Инсталиране на Opencart 1.5.1.3 + Български език

Тази публикация ще обясни в 10 стъпки как се инсталира opencart 1.5.1.3 и българският пакет на потребителската част:

1. Прави се Потребител и парола в MySQL ( ДА НЕ СЕ ПОЛЗВА ROOT)

2. Всички файлове от папката upload се качат в главната root директория примерно "public_html"

3. Изпълняват се тия права:

chmod 0755 or 0777 image/
chmod 0755 or 0777 image/cache/
chmod 0755 or 0777 image/data/
chmod 0755 or 0777 system/cache/
chmod 0755 or 0777 system/logs/
chmod 0755 or 0777 download/
chmod 0755 or 0777 config.php
chmod 0755 or 0777 admin/config.php

4. Инсталира се през уеб инсталатора

5. Изтрива се папката install

6. Изтегля се http://www.opencart.com/index.php?route=extension/extension/info&extension_id=4193&filter_search=bulgarian&filter_license=0&filter_download_id=23&sort=e.date_modified&order=DESC
Превода е само за потребителската част, но не смятам, че е проблем. Има и пълен пакет за потребителската и административната част за 10$. Ако някои не може да се справи с англисйкия на админ панел смятам, че е редно да плати 10 $, все пак 10 долара не са никак много.

7. Разархивира се сваления файл и съдържанието му се кача в  и "catalog\language" .

8. Настройки на езика от административния панел (http://example.com/admin/):

От административния панел на магазина se изберa System -> Localisations -> Languages -> Insert.
Попълват се полетата:
Language Name: Bulgarian
Code: BG
Locale: bg.UTF-8,BG,bulgarian
Image: bg.png
Directory: bulgarian
Filename: bulgarian
Status: Enabled
Sort Order: 1

9. Променяте Sort Order на английския език на "2"

10. Това е всичко. Пиете по една биричка за добре свършената работа.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: -1 (from 1 vote)

FTP Рекурсивно променяне на пермишъните

Днес трябваше да помогна на един приятел да му сложа opencart + някакви модули там. Голям шит е да се инсталира каквото и да е през контрол панел , но както и да е все пак през фтп(няма ssh тоя хостинг план) обаче ги ръчнало с 700 и съответно не работи. Това opencart има 91919191 под директории това нещо беше абсурдно на ръка да ги променям . Щях да цъкам през "ftp" без графични приложения ама не става. Междо другото понеже съм натнат в къщи се сетих да споделя какво направих, че може да е полезно на някои.

Когато си нат и се опитваш да се вържеш към ftp през конзолен ftp клиент се получава следното:

current_user@current_user:~$ ftp ftpmashina.com
Connected to ftpmashina.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 7 of 50 allowed.
220-Local time is now 11:39. Server port: 21.
220-This is a private system -- No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (ftpmashina.com:current_user): ftpuser
331 User ftpuser OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
500 I won't open a connection to 10.10.10.3 (only to 77.85.229.10)
ftp: bind: Address already in use

Изпълнява се просто:

passive

и всичко се оправя.
Това не е нещо ново и интересно просто реших, че може да е полезно на някои.

Все пак не ми се пише скриптче рекурсивно да ги разцъка всичките папки файлове затова ще ползвам вече графичен фтп клиент . Любимият ми:

Filezilla

С това графично приложение което си работи перфектно под Debian( като гледам има го и за Windows сигурно и там ще работи добре) много лесно се прави рекурсивна промяна на пермишъните на папки и файлове.

PS: Filezilla е сериозен фаворит при Графичните FTP Клиенти и при това Свободен(коРЕМ<сиално казано: БЕЗПЛАТЕНО).

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Date проблем с php на host.bg

В български хостинг провайдър host.bg когато се изпълни date() през php и връща следната грешка:

Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EET/2.0/no DST' instead in /path/file.php on line 9

Решенеито е просто: Преди използването на date() да се добави:

date_default_timezone_set('Europe/Sofia');


Проблема може да се реши и с error_reporting, но предпочитам по- горното решение.


PS:
Препоръчвам host.bg за хостинг. Пичовете са готини и съпорта им е много добре!

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

за Добруджа

Интересна публикация за Добруджа:

Заключена от долното течение на Дунав и Черно Море , в триъгълника между Балчик, Силистра и Дунавското устие, Добруджа е земята, на която през VII в. за пръв път са стъпили конниците на Аспарух и основали българската държава….

Източник:dobrudja-news.com

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Личен Блог на Мартин Петров