https://help.superhosting.bg/memory-limit.html
  • bg

Хостинг, Домейни, Cloud, Виртуални сървъри (VPS), Managed VPS, SSL сертификати

Как да увелича паметта за php скриптове (memory_limit)?

PHP
php, php директива, памет, memory_limit, php.ini, .htaccess

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

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /home/<cpanel_name>/public_html/your-script.php on line XX.

Увеличаването на паметта за PHP може да се извърши през cPanel -> PHP Manager by SuperHosting или посредством php.ini файл.


PHP Manager by SuperHosting

При всички Linux хостинг планове промяната на директивата memory_limit може да се извърши през "PHP Manager by Superhosting".

След като влезете в контролния панел cPanel, изберете "PHP Manager by SuperHosting". В секцията "Промяна на PHP директиви" ще се зареди следния прозорец:

Промяна на memory_limit в "PHP Manager by SuperHosting"

Срещу всяка от директивите има падащо меню, чрез което можете да изберете желаната стойност. След кликване на бутона "Запази" стойността ще бъде променена за целия хостинг акаунт и всички сайтове, разположени в хостинг акаунта.


php.ini

Първо е необходимо да проверите какъв е протоколът за обработка на PHP заявките (CGI или FastCGI) във вашия хостинг акаунт. За улеснение сме подготвили скрипт, който дава информация за това и инструкции за промяна на директиви. Името на скрипта е php.php и можете да го свалите от тук. Необходимо е да го разположите в хостинг акаунта в директорията на сайта, за който желаете промени. След като го качите в хостинг акаунта, можете да го стартирате по следния начин:

http://domain.tld/php.php

Забележка: Необходимо е да замените domain.tld с името на вашия домейн.

След това следвайте инструкциите за промяна, които ще видите на заредилата се страница.


CGI

В home директорията на акаунта ще намерите системен php.ini файл. Можете да го редактирате през файловия мениджър или чрез текстов редактор. Необходимо е да промените стойността на директивата memory_limit по следния начин:

memory_limit = 128M

В случая е зададена примерна стойност от 128 MB, но може да бъде зададена и по-висока.

Препоръчително е да увеличавате memory_limit с толкова, колкото е необходимо. Не е добра практика да се задава твърде голяма стойност.

Стандартно php.ini файлът има действие за директорията, в която се намира. За да оказва влияние за всички поддиректории, трябва да добавите в .htaccess файл следните редове:

<IfModule mod_env.c>
SetEnv PHPRC /home/your_cpanel_username/php.ini
</IfModule>

- заменете your_cpanel_username с потребителското име за контролния панел cPanel.

След като сте извършили посочените действия, можете да проверите стойността за директивата memory_limit, като използвате функцията phpinfo().


FastCGI

В home директорията на акаунта ще намерите системен php-fcgi.ini файл. Можете да го редактирате през файловия мениджър или чрез текстов редактор. Необходимо е да промените стойността на директивата memory_limit по следния начин:

memory_limit = 128M

В случая е зададена примерна стойност от 128 MB, но може да бъде зададена и по-висока стойност от 128 MB.

Препоръчително е да увеличавате memory_limit с толкова, колкото е необходимо. Не е добра практика да се задава твърде голяма стойност.

За да може php-fcgi.ini файлът да важи за хостинг акаунта, е необходимо да бъде указано във файл php.fcgi. Проверете дали в home директорията на акаунта има съществуващ файл с това име. В случай че не е наличен, то можете да го създадете.

Важно: Правата на файл php.fcgi трябва да бъдат 755.

Проверете дали във файла има следните редове и ако ги няма, то е необходимо да ги добавите:

#!/bin/bash
DEFAULTPHPINI=/home/your_cpanel_username/php-fcgi.ini
exec /usr/bin/php -c ${DEFAULTPHPINI}

- заменете your_cpanel_username с потребителското име за контролния панел cPanel.

За да влязат в сила промените за целия хостинг акаунт, е необходимо да проверите дали в .htaccess файл в home директорията има добавени следните редове. Ако ги няма, то е необходимо да ги добавите:

<IfModule mod_fcgid.c>
AddHandler fcgid-script .php
FcgidWrapper /home/your_cpanel_username/php.fcgi .php
</IfModule>

- заменете your_cpanel_username с потребителското име за контролния панел cPanel.

След като сте извършили посочените действия, можете да проверите стойността за директивата memory_limit, като използвате функцията phpinfo().

500px270px
SuperHosting.BG
    PHP
  • Какво е PHP модул (PHP разширение)?
    PHP модулите представляват разширения за PHP, най-често написани на програмния език C. PHP модулите могат да се компилират с PHP, така че да се зареждат статично (като са част от... »
  • Ползване на различен php.ini файл за PHP (cli) през SSH
    При ползване на PHP през команден режим по подразбиране с командата php се стартира PHP CLI бинарния файл, който отговаря на PHP версията инсталирана по подразбиране. За списък с всички опции... »
  • PHP CLI (Command Line Interface)
    PHP има различни интерфейси (SAPI) за взаимодействие със средата, в която работи, и за връзка с външни (за PHP) технологии. Два от интерфейсите са PHP CLI и PHP CGI (FastCGI). От версия... »
  • Какво е CGI, FastCGI?
    CGI (Common Gateway Interface) е уеб технология и протокол, по правилата на който се извършва комуникацията между уеб сървър (HTTP сървър) и други външни приложения (например PHP). CGI разширява възможностите... »
  • Активиране на PHP модул/разширение в хостинг акаунта
    Активиране на PHP модул през PHP Manager by SuperHosting За улеснено активиране и деактивиране на PHP модули в хостинг акаунта може да използвате PHP Manager by SuperHosting, в контролния панел cPanel. При... »
Всички права запазени © 2005-2017 , www.superhosting.bg