いつもお世話になっています。
さて、以下の環境で 5.6.3.3 にUpDateしたところ
php でメモリー不足のエラーメッセージが出るようになりましたのでご報告します。
なお、メモリは1024Mまで上げてみましたが改善しませんでした。
環境
CentOS release 6.5 (Final)
Server version: Apache/2.2.15 (Unix)
Server built: Apr 3 2014 23:56:16
php-5.5.7-1.el6.x86_64
mysql-5.1.71-1.el6.x86_64
サーバ設定情報は以下の通りです。
# concrete5 Version
5.6.3.1
# concrete5 Packages
Force SSL (1.0), FreeCSS 126 Themes (1.0), Iframe (1.0), Innovation (2.2), Internationalization (1.3).
# concrete5 Overrides
controllers/register.php, helpers/file.php_bak, helpers/concrete, jobs/generate_sitemap.php, jobs/user_trans.php, languages/ja_JP.UTF8, themes/default_fki
# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - On - If blocks on the particular page allow it.
Full Page Cache Lifetime - Every minutes.
# Server Software
Apache
# Server API
apache2handler
# PHP Version
5.5.7
# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, ffmpeg, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, mhash, mssql, mysql, mysqli, mysqlnd, odbc, openssl, pcre, PDFlib, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_ODBC, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, recode, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, wddx, xhprof, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib.
# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 512M
post_max_size - 10M
sql.safe_mode - Off
upload_max_filesize - 30M
ibase.max_links - Unlimited
ibase.max_persistent - Unlimited
ldap.max_links - Unlimited
mssql.max_links - Unlimited
mssql.max_persistent - Unlimited
mssql.max_procs - Unlimited
mssql.textlimit - Server default
mysql.max_links - Unlimited
mysql.max_persistent - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
odbc.max_links - Unlimited
odbc.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
session.cache_limiter - nocache
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 4000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5
Posted on 3月 19, 2015 at 9:17 午後
|
マルチバイト化でちょっと違ったアプローチをしたとこと、簡単にファイル名のマルチバイト化ができましたので、参考までお知らせします。
具体的には、/concrete/helpers/file.php を /helpers/file.php
にコピーし、クラス名をSiteFileHelperに変えます。
変更するファンクションは
public function forceDownload($file)
public function sanitize($file)
の2つだけです。追加するコードも合わせて20行ほどで済みました。
public function forceDownload($file)
では
$filename = basename($file);
の行の後に、
$useragent = $_SERVER['HTTP_USER_AGENT'];
if (strstr($useragent, 'Windows') !== false ||
strstr($useragent, 'Mac_') !== false) {
$filename = mb_convert_encoding($filename, 'SJIS', APP_CHARSET);
}
の5行を加えます。
public function sanitize($file)
では
$file = preg_replace(array("/[\s]/","/[^0-9A-Z_a-z-.]/"),array("_",""), $file);
の行をコメントアウトして以下の15行を加えます。
$file = preg_replace("/[\s]/","_", $file);
if(strpos($_SERVER['HTTP_USER_AGENT'], 'Windows') == false)
$separater = '/';
else
$separater = '\\';
$len = strlen($file);
$i = $len-1;
while ($i > 0) {
if (substr($file, $i, 1) == $sepalater) break;
$i--;
}
if ($i != 0) $i++;
$newlen = $len - $i;
$file = substr($file, $i, $newlen);
Windowsのサーバ環境では試していませんが、Linuxのサーバ環境では
これでOKでした。
Posted on 5月 01, 2011 at 11:43 午前
|