Tag: php

  • PHP Delete element from array with array_splice()

    array_splice()

    If you use array_splice() the keys will be automatically reindexed, but the associative keys won’t change opposed to array_values() which will convert all keys to numerical keys.

    Also array_splice() needs the offset, not the key!, as second parameter.

    Code

    <?php
    
        $array = array(0 => "a", 1 => "b", 2 => "c");
        array_splice($array, 1, 1);
                           //↑ Offset which you want to delete
    
    ?>

    Output

    Array (
        [0] => a
        [1] => c
    )

    array_splice() same as unset() take the array by reference, this means you don’t want to assign the return values of those functions back to the array.

  • configure: error: mcrypt.h not found. Please reinstall libmcrypt

    On Centos6/7, when compile PHP from source:

    configure: error: mcrypt.h not found. Please reinstall libmcrypt

    To fix this:

    yum update epel-release
    yum install -y libmcrypt-devel

    or if it doesn’t work, use epel-release from Fedora:

    rpm -ivh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    yum install -y libmcrypt-devel

     

     

     

  • Increase upload size in your php.ini

    Drupal’s limits on upload file size are determined by your server’s PHP settings (as well as Drupal specified settings that can be set at Admin > Site Configuration > File Upload). The default values for PHP will restrict you to a maximum 2 MB upload file size.

    On the settings page for the upload module, Drupal calculates and displays the maximum file size that you can set based upon two PHP settings: ‘post_max_size’ and ‘upload_max_filesize’. Since ‘post_max_size’ is the limit for all the content of your post, many people choose ‘post_max_size’ to be a multiple of ‘upload_max_filesize’ to allow multiple files to be uploaded, but this is not essential. The upload module limits the size of a single attachment to be less than either post_max_size, or upload_max_filesize, whichever is smaller. The default PHP values are 2 MB for upload_max_filesize, and 8 MB for post_max_size.

    Depending on your host, changing these two PHP variables can be done in a number of places with the most likely being php.ini or .htaccess (depending on your hosting situation).

    For example, to increase the limit on uploaded files to 10 MB:

    • Add the below to the relevant php.ini file (recommended, if you have access). Note that for some hosts this is a system-wide setting. However, for hosts running PHP as a CGI script with suexec (for example) you may be able to put these directives in a php.ini file in your Drupal root directory.
      • upload_max_filesize = 10M
      • post_max_size = 10M
    • Add the below to your .htaccess file in your Drupal root directory.
      • php_value upload_max_filesize 10M
      • php_value post_max_size 10M

    The PHP documentation states that the memory_limit setting also affects file uploading. Generally speaking, memory_limit should be larger than post_max_size. If this is an issue, see the page on how to Increase memory available to PHP (3 methods)

    Drupal also allows/enforces its own size limits, independently of what PHP allows. These are found in Drupal 6 at “Administer » Site configuration » File uploads” ( /admin/settings/uploads ). In Drupal 7 size limit is controlled on per-field basis. The Drupal settings cannot be larger than those permitted by PHP, but may be smaller if you haven’t updated them, so remember to check there also, after updating the php.ini.

    Increasing PHP upload size is different from increasing PHP memory limit. You can learn to increase memory limit here.

  • PHP install Error: xml2-config not found. Please check your libxml2

    Soultion:

    Ubuntu

    sudo apt-get install libxml2-dev

    Centos:

    sudo yum install libxml2-devel

  • Exception PDOException with message SQLSTATE[HY000] Name too long for LOGINREC field (severity 2)

    Error: When connecting to MS SQL using freetds 0.91 and php>5.3:

    Exception ‘PDOException’ with message ‘SQLSTATE[HY000] Name too long for LOGINREC field (severity 2)’

    Cause:

    Any string exceeds 30 characters in connection info like username, password, client host name will cause this error.

    Solution:

    Check client hostname in /etc/sysconfig/network, reduce it to less than 30 characters

    Check username and password length in DB connection string, reduce it to less than 30 characters

  • PHP check mobile browser

    function isMobileDevice(){
    $aMobileUA = array(
    ‘/iphone/i’ => ‘iPhone’,
    ‘/ipod/i’ => ‘iPod’,
    ‘/ipad/i’ => ‘iPad’,
    ‘/android/i’ => ‘Android’,
    ‘/blackberry/i’ => ‘BlackBerry’,
    ‘/webos/i’ => ‘Mobile’
    );

    //Return true if Mobile User Agent is detected
    foreach($aMobileUA as $sMobileKey => $sMobileOS){
    if(preg_match($sMobileKey, $_SERVER[‘HTTP_USER_AGENT’])){
    return true;
    }
    }
    //Otherwise return false..
    return false;
    }

  • PHP install from source error on Ubuntu

    1. configure: error: xml2-config not found. Please check your libxml2 installation.

    # sudo apt-get install libxml2-dev

    2. configure: error: Could not find pcre.h in /usr

    # sudo apt-get install libpcre3-dev

    3. configure: error: Please reinstall the BZip2 distribution

    #sudo apt-get install libbz2-dev

    4. configure: error: Please reinstall the libcurl distribution

    # sudo apt-get install libcurl4-openssl-dev

    5. configure: error: DBA: Could not find necessary header file(s). checking for db4 major version… configure: error: Header contains different version

    # sudo apt-get install libdb4.8-dev

    6. configure: error: libjpeg.(a|so) not found.

    # sudo apt-get install libjpeg-dev

    7. configure: error: libpng.(a|so) not found.

    # sudo apt-get install libpng12-dev

    8. configure: error: libXpm.(a|so) not found.

    # sudo apt-get install libxpm-dev

    9. configure: error: freetype.h not found.

    # sudo apt-get install libfreetype6-dev

    10. configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path

    # sudo apt-get install postgresql-server-dev-9.1

    11. configure: error: Your t1lib distribution is not installed correctly. Please reinstall it.

    # sudo apt-get install libt1-dev

    12. configure: error: Unable to find gd.h anywhere under /usr

    # sudo apt-get install libgd2-xpm-dev

    13. configure: error: Unable to locate gmp.h

    # sudo apt-get install libgmp-dev

    14. configure: error: Cannot find MySQL header files under /usr.

    # sudo apt-get install libmysqlclient-dev

    15. configure: error: sasl.h not found!

    # sudo apt-get install libsasl2-dev

    16. configure: error: Please reinstall libmhash – I cannot find mhash.h

    # sudo apt-get install libmhash-dev

    17. checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!

    # sudo apt-get install unixodbc-dev

    18. configure: error: Directory /usr is not a FreeTDS installation directory

    # sudo apt-get install freetds-dev

    19. configure: error: Cannot find pspell

    # sudo apt-get install libpspell-dev

    20. configure: error: SNMP sanity check failed. Please check config.log for more information.

    #sudo apt-get install libsnmp-dev

    21. configure: error: Cannot find libtidy

    # sudo apt-get install libtidy-dev

    22. configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

    # sudo apt-get install libxslt1-dev

    23. configure: error: mcrypt.h not found. Please reinstall libmcrypt.

    # sudo apt-get install libmcrypt-dev

    24# configure: error: Cannot find OpenSSL’s libraries

    # ./configure –with-libdir=/lib/x86_64-linux-gnu

    25. configure: error: You’ve configured extension pdo_sqlite to build statically, but it depends on extension pdo, which you’ve configured to build shared. You either need to build pdo_sqlite shared or build pdo statically for the build to be successful.

    # ./configure –with-pdo-sqlite=shared –with-sqlite=shared

  • PHP errors when install from source on Centos RHEL

    ERROR:

    checking for BZip2 support… yes
    checking for BZip2 in default path… not found
    configure: error: Please reinstall the BZip2 distribution

    Solution:

    yum install bzip2-devel

    ERROR:

    checking for cURL support… yes
    checking if we should use cURL for url streams… no
    checking for cURL in default path… not found
    configure: error: Please reinstall the libcurl distribution –
    easy.h should be in /include/curl/

    Solution:

    yum install curl-devel

    ERROR:

    checking for fabsf… yes
    checking for floorf… yes
    configure: error: jpeglib.h not found.

    checking for fabsf… yes
    checking for floorf… yes
    checking for jpeg_read_header in -ljpeg… yes
    configure: error: png.h not found.

    Solution:

    yum install libjpeg-devel

    ERROR:

    checking for curl_multi_strerror in -lcurl… yes
    checking for QDBM support… no
    checking for GDBM support… no
    checking for NDBM support… no
    configure: error: DBA: Could not find necessary header file(s).

    Solution:

    yum install db4-devel

    ERROR:

    checking for png_write_image in -lpng… yes
    If configure fails try –with-xpm-dir=

    configure: error: freetype.h not found.

    Solution:

    Fix: Reconfigure your PHP with the following option.
    –with-xpm-dir=/usr

    ERROR:

    checking for png_write_image in -lpng… yes
    configure: error: libXpm.(a|so) not found.

    Solution:

    yum install libXpm-devel

    ERROR:

    checking for bind_textdomain_codeset in -lc… yes
    checking for GNU MP support… yes
    configure: error: Unable to locate gmp.h

    Solution:

    yum install gmp-devel

    ERROR:

    checking for utf8_mime2text signature… new
    checking for U8T_DECOMPOSE…
    configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

    Solution:

    yum install libc-client-devel

    ERROR:

    checking for LDAP support… yes, shared
    checking for LDAP Cyrus SASL support… yes
    configure: error: Cannot find ldap.h

    Solution:

    yum install openldap-devel

    ERROR:

    checking for mysql_set_character_set in -lmysqlclient… yes
    checking for mysql_stmt_next_result in -lmysqlclient… no
    checking for Oracle Database OCI8 support… no
    checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!

    Solution:

    yum install unixODBC-devel

    ERROR:

    checking for PostgreSQL support for PDO… yes, shared
    checking for pg_config… not found
    configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path

    Solution:

    yum install postgresql-devel

    ERROR:

    checking for sqlite 3 support for PDO… yes, shared
    checking for PDO includes… (cached) /usr/local/src/php-5.3.7/ext
    checking for sqlite3 files in default path… not found
    configure: error: Please reinstall the sqlite3 distribution

    Solution:

    yum install sqlite-devel

    ERROR:

    checking for utsname.domainname… yes
    checking for PSPELL support… yes
    configure: error: Cannot find pspell

    Solution:

    yum install aspell-devel

    ERROR:

    checking whether to enable UCD SNMP hack… yes
    checking for default_store.h… no

    checking for kstat_read in -lkstat… no
    checking for snmp_parse_oid in -lsnmp… no
    checking for init_snmp in -lsnmp… no
    configure: error: SNMP sanity check failed. Please check config.log for more information.

    Solution:

    yum install net-snmp-devel

    ERROR:

    checking whether to enable XMLWriter support… yes, shared
    checking for xml2-config path… (cached) /usr/bin/xml2-config
    checking whether libxml build works… (cached) yes
    checking for XSL support… yes, shared
    configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

    Solution:

    yum install libxslt-devel

    ERROR:

    configure: error: xml2-config not found. Please check your libxml2 installation.

    Solution:

    yum install libxml2-devel

    ERROR:

    checking for PCRE headers location… configure: error: Could not find pcre.h in /usr

    Solution:

    yum install pcre-devel

    ERROR:

    libtool: link: cannot find the library `/usr/lib/libidn.la’ or unhandled argument `/usr/lib/libidn.la’
    make: *** [sapi/cgi/php-cgi] Error 1

    Solution:

    cd /usr/src/
    wget http://ftp.gnu.org/gnu/libidn/libidn-1.26.tar.gz
    tar -zvxf libidn-1.26.tar.gz
    cd libidn-1.26
    ./configure
    make
    make install
    ln -s /usr/local/lib/libidn.la /usr/lib/libidn.la

    ERROR:

    libtool: link: `/usr/lib/libxml2.la’ is not a valid libtool archive
    make: *** [ext/xsl/xsl.la] Error 1

    Solution:

    cd /usr/src/
    wget ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
    tar -zvxf libxml2-2.7.3.tar.gz
    cd libxml2-2.7.3
    ./configure –prefix=/usr
    make
    make install

    ERROR:

    configure: error: Your t1lib distribution is not installed correctly. Please reinstall it.

    Solution:

    yum install t1lib-devel.x86_64

    ERROR:

    configure: error: mcrypt.h not found. Please reinstall libmcrypt.

    Solution:

    yum install libmcrypt-devel.x86_64

    ERROR:

    configure: error: Cannot find libtidy

    Solution:

    yum install libtidy libtidy-devel

  • configure: error: snmp.h not found. Check your SNMP installation

    On Centos:
    sudo yum install net-snmp net-snmp-devel
    On Ubuntu:
    sudo apt-get install libsnmp-dev