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.

PHP Delete element from array with array_splice()

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

 

 

 

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

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.

Increase upload size in your php.ini

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

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

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 check mobile browser

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 install from source error on Ubuntu

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

PHP errors when install from source on Centos RHEL