<![CDATA[Newsletter+ Software Community]> 2016-03-30T07:24:17Z FluxBB https://newsletterplus.net/community/index.php <![CDATA[Апрель 2016]> Что нового в Апреле 2016?

]>
https://newsletterplus.net/community/profile.php?id=2 2016-03-30T07:24:17Z https://newsletterplus.net/community/viewtopic.php?id=17&action=new
<![CDATA[April 2016]> What's new in April 2016?

]>
https://newsletterplus.net/community/profile.php?id=2 2016-03-30T07:23:57Z https://newsletterplus.net/community/viewtopic.php?id=16&action=new
<![CDATA[Ошибка 404]> Прежде чем читать дальше убедитесь, что файл .htaccess загружен на сервер.

В рамках минимальных требований, mod_rewrite должен быть включен.

Если Вы видите ошибку 404 на этапе установки Newsletter+, значит mod_rewrite не включен.

Некоторые хостинги возвращают ошибку 404, даже если он включен. Для исправления добавьте в файл .htaccess после строки RewriteEngine On:

RewriteBase / если URL установки выглядит как http://mydomain.com или http://newsletter.mydomain.com

или

RewriteBase /newsletter если URL установки выглядит как http://mydomain.com/newsletter

Если обе строки не работают, то создайте файл .htaccess (если он не существует) в корневой директории со следующей строкой:

RewriteBase /

Если ничего не помогло, mod_rewrite не включен на вашем сервере, свяжитесь с поддержкой хостинга для включения mod_rewrite.

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-05T19:12:10Z https://newsletterplus.net/community/viewtopic.php?id=15&action=new
<![CDATA[Ошибка 500]> Вы можете увидеть ошибку 500, если сервер скрывает вывод ошибок.

Отредактируйте файл index.php. Найдите константу ENVIRONMENT и установите её значение в 'development' с 'production'. Режим разработчика покажет Вам все ошибки на сайте.

Не забудьте отменить изменения, чтобы снова скрывать ошибки.

Регина

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-05T19:05:52Z https://newsletterplus.net/community/viewtopic.php?id=14&action=new
<![CDATA[500 error]> You can see 500 error if server hides errors log.

Edit index.php file. Find ENVIRONMENT constant and change it to 'development' from 'production'. Development mode show all errors.

Don't forget revert changes to hide errors log.

Regina

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-05T19:03:23Z https://newsletterplus.net/community/viewtopic.php?id=13&action=new
<![CDATA[404 Error]> Before reading further, please verify that the .htaccess file has been uploaded.

As part of the compatibility checklist, mod_rewrite needs to be enabled.

If you get a 404 error when installing Newsletter+, this means mod_rewrite may not be enabled.

Some hosts returns a 404 error even when it’s enabled. To fix this, try adding the following line to Newsletter+ .htaccess file right after the line RewriteEngine On:

RewriteBase / if your installation URL looks like http://mydomain.com or http://newsletter.mydomain.com

or

RewriteBase /newsletter if your installation URL looks like http://mydomain.com/newsletter

If both lines does not work, create a .htaccess file (if it does not exist) in your root directory with this line:

RewriteBase /

If everything fails, mod_rewrite is not enabled on your server, consult your host to enable mod_rewrite.

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:19:15Z https://newsletterplus.net/community/viewtopic.php?id=12&action=new
<![CDATA[No input file specified.]> How to Solve “No input file specified” with PHP and Nginx.

“No input file specified” or “Primary script unknown” in the error log is one of the most frequently encountered issues in nginx+PHP.

This is actually an error from PHP and due to display_errors being 0ff people will often just get a blank page with no output. In a typical setup PHP will then send the error to stderr or stdout and nginx will pick up on it and log it in the nginx error log file. Thus people spend a ton of time trying to figure out why nginx isn’t working.

The root cause of the error is that PHP cannot find the file nginx is telling it to look for, and there are a few common cases that causes this.

Fast way for Newsletter+

In most cases it is enough to edit a file .htaccess.

Find line: RewriteRule ^(.*)$ index.php/$1 [L]
Edit to: RewriteRule ^(.*)$ index.php?/$1 [L]
If this solution does not help, read on.

Wrong Path Sent to PHP

The most common reason at the time of writing happens because a user uses a horrible tutorial found via google instead of actually understanding nginx.

Nginx tells PHP about the file to execute via the SCRIPT_FILENAME fastcgi_param value. Most examples in the wiki should define this as $document_root$fastcgi_script_name. The horrible tutorials will often hard code the path value but this is not desirable as we don’t want to duplicate information and invite future screw ups. So you’ve gone with the $document_root$fastcgi_script_name option and suddenly it’s no longer working.

This happens because nginx has 3 levels of inheritance commonly referred to as blocks, these being http, server and location, each being a sub-block of the parent. Directives in nginx inherit downwards but never up or across, so if you define something in one location block it will never be applied in any other location block under any circumstance.

Typically users define their index and root directive in location / because a tutorial told them to. So when they then define SCRIPT_FILENAME using $document_root the root directive is not actually defined and thus the SCRIPT_FILENAME value becomes just the URI making PHP look at the root server dir.

The simple solution here is to just define the directive in your server block. (or http block even!) Generally the higher up your can define a directive the less duplicate directives you’ll need.

Incorrect File Permissions

Most people don’t really believe me when I tell them their file permissions are incorrect. They’re looking at the damn permissions and the PHP user can read the file just fine! Sadly, this shows a lack of understanding of Unix user permissions. Being able to read a file is not enough, a user must also be able to traverse to the file.

This effectively means that not only should the file have read permission, but the entire directory structure should have execute permission so that the PHP user can traverse the path. An example of this:

Say you have an index.php file in /var/www. /var/www/index.php must have read permission and both /var and /var/www must have execute permissions.

Using Alias and $document_root

It is fairly common to define SCRIPT_FILENAME as $document_root$fastcgi_script_filename; However, $document_root does not account for the alias directive and will thus result in an incorrect path being sent. It is preferable to define SCRIPT_FILENAME as such:

fastcgi_param SCRIPT_FILENAME $request_filename;

This accounts for alias and ensures proper path is sent. One note about this is that $request_filename does not account for fastcgi_index, but you only use this index if you send a request ending in / to PHP. If you use the standard PHP location ~ \.php$ then you will never use the fastcgi_index directive.

Chrooted Environment

If your PHP lives in a chrooted environment that nginx does not, then they basically have 2 different roots and the file path that nginx reports to PHP will not resolve to the actual file. A simple example to make this obvious:

Lets say you request phpinfo.php, nginx looks in your defined root and finds this file in: /home/user/public_html/phpinfo.php
The PHP process for user is chrooted to only have access to his directory for security reasons, so as far as PHP knows the root of the server is at /home/user. Therefore when nginx reports the file path PHP will look in: /home/user/home/user/public_html/phpinfo.php.

Either make sure both nginx and PHP has the same chroot or make sure you rewrite your internal URI before you fastcgi pass to PHP.

Open Basedir Restriction

PHP has the option to limit file access to certain directories defined in your php.ini. Some distributions might preconfigure this option for their packaging system.

SCRIPT_NAME Versus SCRIPT_FILENAME

Fastcgi has two parameters which are quite similiar in name, make sure that you’re not confusing the SCRIPT_NAME variable for the SCRIPT_FILENAME one. SCRIPT_FILENAME tells fastcgi the location of the script to execute while SCRIPT_NAME merely tells the name of the script.

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:18:40Z https://newsletterplus.net/community/viewtopic.php?id=11&action=new
<![CDATA[Многопоточность]> Скрипт использует multi_curl для многопоточности.

Если хостинг (vps) не может поддерживать следующие возможности:

  1. curl_exec

  2. curl_multi_exec

то вы можете отключить многопоточность.

Добавьте новую константу в файл /application/config/constants.php, если её в нем нет.

define('DISABLE_THREADING', TRUE);
Этот код отключит многопоточность на Вашем сайте.

Для включения многопоточности используйте код
define('DISABLE_THREADING', FALSE);

Также скрипт может использовать shell_exec функцию для многопоточности

Для включения функции shell_exec используйте код
define('DISABLE_SHELL_EXEC_THREADING', FALSE);

Shell_exec значительно ускоряет долгие процессы, но может не работать на некоторых хостингах.

Все перечисленные константы должны находиться в файле
/application/config/constants.php

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:16:52Z https://newsletterplus.net/community/viewtopic.php?id=10&action=new
<![CDATA[Multi-threading]> Script uses multi_curl for multi-threading.

If hosting (vps) can’t run this functions:

curl_exec
curl_multi_exec
you can disable multi-threading.

Add new constant to file /application/config/constants.php

define('DISABLE_THREADING', TRUE);
This code will disable multi-threading on your site.

To enable multithreading use code
define('DISABLE_THREADING', FALSE);

Also script can uses shell_exec function for multithreading.

To enable shell_exec feature use code
define('DISABLE_SHELL_EXEC_THREADING', FALSE);

Shell_exec can improve speed but can’t work on all servers by default.

All constants must be placed into the file
/application/config/constants.php

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:13:08Z https://newsletterplus.net/community/viewtopic.php?id=9&action=new
<![CDATA[Настройка Cron Jobs]> Все процессы в Newsletter+ работают через Cron Jobs (Scheduled Tasks). Это отправка писем, импорт, и т.д.

Запускайте следующие задачи каждую минуту:

* * * * * php /path_to_script/cron_index.php cron email_newsletters process >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron email_newsletters bounces >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron email_servers send >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron email_notifications process >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron subscribers import >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron monetization time_limited >/dev/null 2>&1

Запускайте следующую задачу каждый день:

0 0 * * * php /path_to_script/cron_index.php cron install check_license >/dev/null 2>&1

Это лишь примеры Cron Jobs. Не нужно глупо копировать. path_to_script нужно заменить на полный путь до файла cron_index.php.

Cron jobs не знает адреса вашего сайта. Проверьте, чтобы адрес сайта был в файле /application/config/config.php и укажите его в переменной base_url, если скрипт не сделал этого при установке.

Важно: Если хостинг не поддерживает запуск PHP команд с параметрами, то используйте WGET (или CURL).

wget -O – -q -t 1 http://site/cron/email_newsletters/process
wget -O – -q -t 1 http://site/cron/email_servers/send
wget -O – -q -t 1 http://site/cron/email_notifications/process
wget -O – -q -t 1 http://site/cron/subscribers/import
wget -O – -q -t 1 http://site/cron/monetization/time_limited

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:12:15Z https://newsletterplus.net/community/viewtopic.php?id=8&action=new
<![CDATA[Cron Jobs settings]> All processes in Newsletter+ runs by Cron Jobs (Scheduled Tasks). It’s sending, importing, etc.

Run this jobs every minute:

* * * * * php /path_to_script/cron_index.php cron email_newsletters process >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron email_newsletters bounces >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron email_servers send >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron email_notifications process >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron subscribers import >/dev/null 2>&1
* * * * * php /path_to_script/cron_index.php cron monetization time_limited >/dev/null 2>&1

Run this job every day:

0 0 * * * php /path_to_script/cron_index.php cron install check_license >/dev/null 2>&1

This is examples of Cron Jobs. Don’t use copy/paste. path_to_script need replace to full path from the root folder to folder with cron_index.php file.

Cron jobs don’t know site url. To fix it open file /application/config/config.php and enter website url to variable base_url, if the script did not do so during installation.

Note: If hosting can’t run PHP commands with parametrs use WGET.

wget -O – -q -t 1 http://site/cron/email_newsletters/process
wget -O – -q -t 1 http://site/cron/email_servers/send
wget -O – -q -t 1 http://site/cron/email_notifications/process
wget -O – -q -t 1 http://site/cron/subscribers/import
wget -O – -q -t 1 http://site/cron/monetization/time_limited

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:09:03Z https://newsletterplus.net/community/viewtopic.php?id=7&action=new
<![CDATA[Привет, переводчик!]> Newsletter+ включает поддержку многоязычности. Вы можете спокойно перевести Ваш Newsletter+ не заботясь, что потеряете переводы при последующих обновлениях. Сам перевод также прост, просто следуйте этому руководству https://newsletterplus.net/main/translation

Если Вы собираетесь перевести Newsletter+ на определённый язык, то можете сделать это в любое время. Или проверьте данный раздел Сообщества, чтобы узнать, вдруг кто-то уже начал перевод на Ваш язык. Если да, то я призываю Вас связаться с переводчиком, чтобы совместно переводить Newsletter+. Вы можете обмениваться файлами перевода для ускорения процесса. Это приведет к более высокому качеству перевода.

Если еще никто не начал переводить на нужный Вам язык, то можете создать новую тему (также укажите хотите ли вы сотрудничать с другими переводчиками).

После того, как перевод будет завершен, пришлите нам перевод и мы его опубликуем на нашем сайте.

Я создам специальную страницу для скачивания Вашего перевода. Каждый, кто участвовал в переводе, может указать своё имя и адрес сайта.

Дайте мне знать, если у Вас возникли вопросы.

Регина

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T22:06:18Z https://newsletterplus.net/community/viewtopic.php?id=6&action=new
<![CDATA[Hello translators!]> Newsletter+ includes translation support. You can safely translate the whole of Newsletter+ without worrying about future updates overwriting them. Translating is also easy, just follow this guide https://newsletterplus.net/main/translation

If you’re going to translate Newsletter+ into a particular language, you can do so at anytime. Or, check the translation category in this forum to see if anyone has started translation into your language. If so, I encourage you to reply the user’s thread to request to “co-translate” Newsletter+. You can even PM each other or request for each other’s email to communicate and send files. This will lead to a higher quality translation.

If no one has started translating into your language, you may want to start a new thread in the translation category to inform others (that’s if you want to co-translate with others).

Once the translation is done, post the language file in the existing thread so that I can download it and put it up on Newsletter+ website.

I will create a page on Newsletter+ website dedicated to downloading language files. Everyone who are involved will be credited with their name linked to their website.

Let me know if you have any questions!

Regina

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T21:58:49Z https://newsletterplus.net/community/viewtopic.php?id=5&action=new
<![CDATA[Введение в Партнёрскую программу]> Многие клиенты спрашивали о Партнёрской программе, чтобы получать комиссию за каждую продажу Newsletter+.

Она наконец здесь. Скажите привет нашей партнёрской программе! Вы можете найти все подробности на странице Партнёрской программы.

Самое лучшее в нашей программе, в отличие от других программ, что вы незамедлительно получаете 30% с каждой продажи. Многие партнёрские программы заставляют Вас ждать от нескольких недель до нескольких месяцев, прежде чем Вы получите свои комиссионные.

Зарегистрируйтесь, чтобы начать продавать Newsletter+ (Вам не нужно быть клиентом Newsletter+), рекламируйте Newsletter+, и имейте свою долю с каждой покупки.

Регина

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T21:51:18Z https://newsletterplus.net/community/viewtopic.php?id=4&action=new
<![CDATA[Introducing Affiliate Program]> A lot of our customers have been wanting an affiliate program so they can get remunerated for referring customers to Newsletter+.

It's finally here. Say hi to our affiliate program! You can find all the details you need on the affiliates page.

The best thing about our affiliate program, unlike others, is that you will get 30% from each sale instantly. Most affiliate programs requires you to wait from weeks to months before you receive your commissions.

Signup to become a Newsletter+ affiliate (you don't need to be a Newsletter+ customer), promote Newsletter+, and you'll get a cut of every sale.

Regina

]>
https://newsletterplus.net/community/profile.php?id=2 2019-03-04T21:46:24Z https://newsletterplus.net/community/viewtopic.php?id=3&action=new