Get the most out of your Centmin Mod LEMP stack
Become a Member

PHP-FPM PHP Was Not Installed Properly

Discussion in 'Nginx, PHP-FPM & MariaDB MySQL' started by BamaStangGuy, Oct 21, 2014.

  1. BamaStangGuy

    BamaStangGuy Active Member

    470
    137
    43
    May 25, 2014
    Ratings:
    +180
    Local Time:
    5:15 AM
    I get this on Centos 7 Fresh install.

    Not really sure where to start looking for error. Where is the install log and what should I be looking for within it?
     
  2. eva2000

    eva2000 Administrator Staff Member

    30,170
    6,785
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +10,138
    Local Time:
    8:15 PM
    Nginx 1.13.x
    MariaDB 5.5
  3. BamaStangGuy

    BamaStangGuy Active Member

    470
    137
    43
    May 25, 2014
    Ratings:
    +180
    Local Time:
    5:15 AM
  4. BamaStangGuy

    BamaStangGuy Active Member

    470
    137
    43
    May 25, 2014
    Ratings:
    +180
    Local Time:
    5:15 AM
    I see this:

    Code:
    real    5m27.814s
    user    7m42.064s
    sys     2m42.398s
    /bin/sh /svr-setup/php-5.3.29/fpm-build/libtool --silent --preserve-dup-deps --mode=link ccache gcc -export-dynamic -I/usr/include -g -O2 -fvisibility=hidden     ext/date/php_$
    /usr/bin/ld: ext/intl/msgformat/msgformat_helpers.o: undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
    /usr/bin/ld: note: '__gxx_personality_v0@@CXXABI_1.3' is defined in DSO /lib64/libstdc++.so.6 so try adding it to the linker command line
    /lib64/libstdc++.so.6: could not read symbols: Invalid operation
    collect2: error: ld returned 1 exit status
    make: *** [sapi/fpm/php-fpm] Error 1
    
    real    0m8.486s
    user    0m4.055s
    sys     0m6.657s
    ^[[1;33;40m----------------------------------------------------------------------------------
    ^[(B^[[mPHP was not installed properly
    ^[[1;33;40m----------------------------------------------------------------------------------
    ^[(B^[[m
    y
    
     
  5. eva2000

    eva2000 Administrator Staff Member

    30,170
    6,785
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +10,138
    Local Time:
    8:15 PM
    Nginx 1.13.x
    MariaDB 5.5
    hmm that's very old PHP version 5.3.29 not default PHP 5.4.34 (as of a few minutes ago)

    it actually might be a bug in PHP 5.3.. if you try PHP 5.4.34 does it work ?

    could be related to specific version of gcc used in CentOS 7 + PHP 5.3 bug as CentOS 7 comes with PHP 5.4.16 defaults so don't think anyone's tested PHP 5.3 on CentOS 7. I haven't either.
     
    Last edited: Oct 21, 2014
  6. eva2000

    eva2000 Administrator Staff Member

    30,170
    6,785
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +10,138
    Local Time:
    8:15 PM
    Nginx 1.13.x
    MariaDB 5.5
    Did a fresh CentOS 6.5 + Centmin Mod .08 install then used menu 5 to downgrade to PHP 5.3.29 and that worked properly due to different gcc version used in CentOS 6.5 than CentOS 7.
     
  7. eva2000

    eva2000 Administrator Staff Member

    30,170
    6,785
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +10,138
    Local Time:
    8:15 PM
    Nginx 1.13.x
    MariaDB 5.5
    Confirmed problem is with CentOS 7.0 and PHP 5.3.x only
    Code:
    nd/zend_execute.lo ext/pcntl/pcntl.lo ext/pcntl/php_signal.lo ext/readline/readline.lo sapi/cli/php_cli.lo sapi/cli/php_cli_readline.lo main/internal_functions_cli.lo -lcrypt -lc-client -lz -ltidy -lresolv -lcrypt -ledit -lncurses -laspell -lpspell -lrt -lcrypt -lpam -lgmp -lt1 -lfreetype -lX11 -lXpm -lpng -lz -ljpeg -lenchant -lcurl -lbz2 -lz -lrt -lm -ldl -lnsl -lxml2 -lz -lm -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -ldl -lm -licui18n -licuuc -licudata -ldl -lm -licuio -lxml2 -lz -lm -ldl -lnetsnmp -lssl -lssl -lcrypto -lm -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt  -o sapi/cli/php
    /usr/bin/ld: ext/intl/msgformat/msgformat_helpers.o: undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
    /usr/bin/ld: note: '__gxx_personality_v0@@CXXABI_1.3' is defined in DSO /lib64/libstdc++.so.6 so try adding it to the linker command line
    /lib64/libstdc++.so.6: could not read symbols: Invalid operation
    collect2: error: ld returned 1 exit status
    make: *** [sapi/cli/php] Error 1
    make: *** Waiting for unfinished jobs....
    /usr/bin/ld: ext/intl/msgformat/msgformat_helpers.o: undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
    /usr/bin/ld: note: '__gxx_personality_v0@@CXXABI_1.3' is defined in DSO /lib64/libstdc++.so.6 so try adding it to the linker command line
    /lib64/libstdc++.so.6: could not read symbols: Invalid operation
    collect2: error: ld returned 1 exit status
    make: *** [sapi/fpm/php-fpm] Error 1
    
    real    0m4.908s
    user    0m4.832s
    sys     0m7.827s
    *************************************************
    
    Mon Oct 20 21:47:58 UTC 2014
    Error: 2, PHP make failed (1.2.3-eva2000.08)
    
    *************************************************
    gcc 4.8.2 used for CentOS 7 could be related
    Code:
    gcc -v
    Using built-in specs.
    COLLECT_GCC=/usr/bin/gcc
    COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/lto-wrapper
    Target: x86_64-redhat-linux
    Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
    Thread model: posix
    gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC)
    
    Code:
    g++ -v
    Using built-in specs.
    COLLECT_GCC=/usr/bin/g++
    COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/lto-wrapper
    Target: x86_64-redhat-linux
    Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
    Thread model: posix
    gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) 
    other PHP 5.3 + CentOS 7 specific compile issues
    Code:
    3.29/fpm-build/    -I/usr/include -g -O2 -fvisibility=hidden  -c /svr-setup/php-5.3.29/ext/pcre/pcrelib/pcre_compile.c -o ext/pcre/pcrelib/pcre_compile.lo
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c: In function ‘php_openssl_setup_crypto’:
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:329:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = SSLv23_client_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:337:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = SSLv2_client_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:342:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = SSLv3_client_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:346:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = TLSv1_client_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:350:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = SSLv23_server_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:354:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = SSLv3_server_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:362:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = SSLv2_server_method();
               ^
    /svr-setup/php-5.3.29/ext/openssl/xp_ssl.c:367:11: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
        method = TLSv1_server_method();
    Code:
    -setup/php-5.3.29/main -I/svr-setup/php-5.3.29/Zend -I/svr-setup/php-5.3.29/TSRM -I/svr-setup/php-5.3.29/fpm-build/    -I/usr/include -g -O2 -fvisibility=hidden  -c /svr-setup/php-5.3.29/ext/dom/document.c -o ext/dom/document.lo
    /svr-setup/php-5.3.29/ext/curl/streams.c: In function ‘php_curl_stream_opener’:
    /svr-setup/php-5.3.29/ext/curl/streams.c:316:11383: warning: call to ‘_curl_easy_setopt_err_progress_cb’ declared with attribute warning: curl_easy_setopt expects a curl_progress_callback argument for this option [enabled by default]
      curl_easy_setopt(curlstream->curl, CURLOPT_PROGRESSFUNCTION, on_progress_avail);
                                                                                        
    Code:
    en  -c /svr-setup/php-5.3.29/ext/dom/domexception.c -o ext/dom/domexception.lo
    /svr-setup/php-5.3.29/ext/dom/document.c: In function ‘zif_dom_document_import_node’:
    /svr-setup/php-5.3.29/ext/dom/document.c:1214:5: warning: passing argument 2 of ‘dom_get_ns’ discards ‘const’ qualifier from pointer target type [enabled by default]
         nsptr = dom_get_ns(root, nodep->ns->href, &errorcode, nodep->ns->prefix);
         ^
    In file included from /svr-setup/php-5.3.29/ext/dom/document.c:28:0:
    /svr-setup/php-5.3.29/ext/dom/php_dom.h:109:10: note: expected ‘char *’ but argument is of type ‘const xmlChar *’
    xmlNsPtr dom_get_ns(xmlNodePtr node, char *uri, int *errorcode, char *prefix);
              ^
    /svr-setup/php-5.3.29/ext/dom/document.c:1214:5: warning: passing argument 4 of ‘dom_get_ns’ discards ‘const’ qualifier from pointer target type [enabled by default]
         nsptr = dom_get_ns(root, nodep->ns->href, &errorcode, nodep->ns->prefix);
         ^
    In file included from /svr-setup/php-5.3.29/ext/dom/document.c:28:0:
    /svr-setup/php-5.3.29/ext/dom/php_dom.h:109:10: note: expected ‘char *’ but argument is of type ‘const xmlChar *’
    xmlNsPtr dom_get_ns(xmlNodePtr node, char *uri, int *errorcode, char *prefix);
              ^
    Code:
    -fvisibility=hidden  -c /svr-setup/php-5.3.29/ext/intl/msgformat/msgformat_class.c -o ext/intl/msgformat/msgformat_class.lo
    /svr-setup/php-5.3.29/ext/intl/dateformat/dateformat_format.c: In function ‘internal_get_timestamp’:
    /svr-setup/php-5.3.29/ext/intl/dateformat/dateformat_format.c:109:7: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
      pcal = udat_getCalendar(DATE_FORMAT_OBJECT(dfo));
           ^
    Code:
    /svr-setup/php-5.3.29/ext/intl/resourcebundle/resourcebundle.c: In function ‘resourcebundle_extract_value’:
    /svr-setup/php-5.3.29/ext/intl/resourcebundle/resourcebundle.c:44:4: warning: passing argument 1 of ‘_efree’ discards ‘const’ qualifier from pointer target type [enabled by default]
        INTL_METHOD_RETVAL_UTF8(source, ufield, ilen, 0);
        ^
    In file included from /svr-setup/php-5.3.29/Zend/zend.h:237:0,
                     from /svr-setup/php-5.3.29/ext/intl/resourcebundle/resourcebundle.c:19:
    /svr-setup/php-5.3.29/Zend/zend_alloc.h:60:46: note: expected ‘void *’ but argument is of type ‘const UChar *’
    ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
                                                  ^
    Code:
    dden  -c /svr-setup/php-5.3.29/ext/soap/php_xml.c -o ext/soap/php_xml.lo
    /svr-setup/php-5.3.29/ext/soap/soap.c: In function ‘serialize_response_call’:
    /svr-setup/php-5.3.29/ext/soap/soap.c:4147:5: warning: passing argument 3 of ‘php_escape_html_entities’ from incompatible pointer type [enabled by default]
         char *str = php_escape_html_entities((unsigned char*)Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), &new_len, 0, 0, NULL TSRMLS_CC);
         ^
    In file included from /svr-setup/php-5.3.29/ext/standard/php_standard.h:30:0,
                     from /svr-setup/php-5.3.29/ext/soap/php_soap.h:28,
                     from /svr-setup/php-5.3.29/ext/soap/soap.c:25:
    /svr-setup/php-5.3.29/ext/standard/html.h:42:47: note: expected ‘int *’ but argument is of type ‘size_t *’
    PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC);
                                                   ^
    /svr-setup/php-5.3.29/ext/soap/soap.c:4172:5: warning: passing argument 3 of ‘php_escape_html_entities’ from incompatible pointer type [enabled by default]
         char *str = php_escape_html_entities((unsigned char*)Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), &new_len, 0, 0, NULL TSRMLS_CC);
         ^
    In file included from /svr-setup/php-5.3.29/ext/standard/php_standard.h:30:0,
                     from /svr-setup/php-5.3.29/ext/soap/php_soap.h:28,
                     from /svr-setup/php-5.3.29/ext/soap/soap.c:25:
    /svr-setup/php-5.3.29/ext/standard/html.h:42:47: note: expected ‘int *’ but argument is of type ‘size_t *’
    PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC);
                                                   ^
    Code:
    te -I/usr/include/pspell -I/svr-setup/php-5.3.29/fpm-build/TSRM -I/svr-setup/php-5.3.29/fpm-build/Zend -I/svr-setup/php-5.3.29/main -I/svr-setup/php-5.3.29/Zend -I/svr-setup/php-5.3.29/TSRM -I/svr-setup/php-5.3.29/fpm-build/    -I/usr/include -g -O2 -fvisibility=hidden  -c /svr-setup/php-5.3.29/ext/sqlite/libsqlite/src/insert.c -o ext/sqlite/libsqlite/src/insert.lo
    /svr-setup/php-5.3.29/ext/sqlite/libsqlite/src/func.c: In function ‘minmaxFunc’:
    /svr-setup/php-5.3.29/ext/sqlite/libsqlite/src/func.c:38:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
       mask = (int)sqlite_user_data(context);
              ^
    /svr-setup/php-5.3.29/ext/sqlite/libsqlite/src/func.c: In function ‘minmaxStep’:
    /svr-setup/php-5.3.29/ext/sqlite/libsqlite/src/func.c:526:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
       mask = (int)sqlite_user_data(context);
     
    Last edited: Oct 21, 2014
  8. eva2000

    eva2000 Administrator Staff Member

    30,170
    6,785
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +10,138
    Local Time:
    8:15 PM
    Nginx 1.13.x
    MariaDB 5.5
    Managed to get past one of the errors preventing compiling PHP 5.3.29 + CentOS 7 related PHP Intl extension enabling, PHP 5.3.29 doesn't seem to like enabling PHP Intl extension on CentOS 7. Latest commit to Centmin Mod .08 beta01 adds a new option to disable PHPINTL=y|n in centmin.sh prior to downgrading PHP to PHP 5.3.29.

    While PHP ends up installed, there's ALOT of other errors reported during compiling, so not entirely sure you'd be out of the woods with CentOS 7 and PHP 5.3.29. Probably better to stick with CentOS 6.5 for PHP 5.3.x setups right now

    Code:
    php -v
    PHP 5.3.29 (cli) (built: Oct 21 2014 00:01:42)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
    
    Code:
    cat /etc/redhat-release; cat /etc/centminmod-release
    CentOS Linux release 7.0.1406 (Core)
    1.2.3-eva2000.08
    for instance Imagick PHP extension not working
    Code:
    Starting php-fpm [21-Oct-2014 00:08:35] NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/imagick.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/imagick.so: cannot open shared object file: No such file or directory in Unknown on line 0
    done
    needed a manual recompile via centmin.sh menu option 15 after PHP 5.4.34 to PHP 5.3.29 downgrade to clear that error

    Code:
    php --ri imagick
    
    imagick
    
    imagick module => enabled
    imagick module version => 3.2.0RC1
    imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
    ImageMagick version => ImageMagick 6.8.9-7 Q16 x86_64 2014-08-25 http://www.imagemagick.org
    ImageMagick copyright => Copyright (C) 1999-2014 ImageMagick Studio LLC
    ImageMagick release date => 2014-08-25
    ImageMagick number of supported formats:  => 210
    ImageMagick supported formats => 3FR, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FITS, FRACTAL, FTS, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, GV, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, JNG, JNX, JPEG, JPG, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
    
    Directive => Local Value => Master Value
    imagick.locale_fix => 0 => 0
    imagick.progress_monitor => 0 => 0
    although there's still some compile related stuff

    Code:
      zend_throw_exception(ce, description, code TSRMLS_CC);
      ^
    In file included from /svr-setup/imagick-3.2.0RC1/php_imagick_defs.h:33:0,
                     from /svr-setup/imagick-3.2.0RC1/imagick_helpers.c:22:
    /usr/local/include/php/Zend/zend_exceptions.h:43:48: note: expected ‘char *’ but argument is of type ‘const char *’
    ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC);
                                                    ^
    /svr-setup/imagick-3.2.0RC1/imagick_helpers.c: In function ‘s_convert_exception’:
    /svr-setup/imagick-3.2.0RC1/imagick_helpers.c:463:3: warning: passing argument 2 of ‘zend_throw_exception’ discards ‘const’ qualifier from pointer target type [enabled by default]
       zend_throw_exception(php_imagick_exception_class_entry, default_message, code TSRMLS_CC);
       ^
    In file included from /svr-setup/imagick-3.2.0RC1/php_imagick_defs.h:33:0,
                     from /svr-setup/imagick-3.2.0RC1/imagick_helpers.c:22:
    /usr/local/include/php/Zend/zend_exceptions.h:43:48: note: expected ‘char *’ but argument is of type ‘const char *’
    ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC);
     
    Last edited: Oct 21, 2014