Composer with CodeIgniter

original source :https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu

About LAMP

LAMP stack is a group of open source software used to get web servers
up and running. The acronym stands for Linux, Apache, MySQL, and PHP.
Since the virtual private server is already running Ubuntu, the linux
part is taken care of. Here is how to install the rest.

Set Up

The  steps in this tutorial require the user to have root privileges on your VPS. You can see how to set that up in the Initial Server Setup in steps 3 and 4.

Step One—Install Apache

Apache is a free open source software which runs over 50% of the world’s web servers.

To install apache, open terminal and type in these commands:

sudo apt-get update
sudo apt-get install apache2

That’s it. To check if Apache is installed, direct your browser to
your server’s IP address (eg. http://12.34.56.789). The page should
display the words “It works!” like this.

How to Find your Server’s IP address

You can run the following command to reveal your server’s IP address.

ifconfig eth0 | grep inet | awk '{ print $2 }'

Step Two—Install MySQL

MySQL is a powerful database management system used for organizing and retrieving data

To install MySQL, open terminal and type in these commands:

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

During the installation, MySQL will ask you to set a root password.
If you miss the chance to set the password while the program is
installing, it is very easy to set the password later from within the
MySQL shell.

Once you have installed MySQL, we should activate it with this command:

sudo mysql_install_db

Finish up by running the MySQL set up script:

sudo /usr/bin/mysql_secure_installation

The prompt will ask you for your current root password.

Type it in.

OK, successfully used password, moving on…

Then the prompt will ask you if you want to change the root password. Go ahead and choose N and move on to the next steps.

It’s easiest just to say Yes to all the options. At the end, MySQL will reload and implement the new changes.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y                                            
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

Once you’re done with that you can finish up by installing PHP.

Step Three—Install PHP

PHP is an open source web scripting language that is widely use to build dynamic webpages.

To install PHP, open terminal and type in this command.

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

After you answer yes to the prompt twice, PHP will install itself.

It may also be useful to add php to the directory index, to serve the relevant php index files:

sudo nano /etc/apache2/mods-enabled/dir.conf

Add index.php to the beginning of index files. The page should now look like this:

<IfModule mod_dir.c>

          DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>

PHP Modules

PHP also has a variety of useful libraries and modules that you can
add onto your virtual server. You can see the libraries that are
available.

apt-cache search php5-

Terminal will then display the list of possible modules. The beginning looks like this:

php5-cgi - server-side, HTML-embedded scripting language (CGI binary)
php5-cli - command-line interpreter for the php5 scripting language
php5-common - Common files for packages built from the php5 source
php5-curl - CURL module for php5
php5-dbg - Debug symbols for PHP5
php5-dev - Files for PHP5 module development
php5-gd - GD module for php5
php5-gmp - GMP module for php5
php5-ldap - LDAP module for php5
php5-mysql - MySQL module for php5
php5-odbc - ODBC module for php5
php5-pgsql - PostgreSQL module for php5
php5-pspell - pspell module for php5
php5-recode - recode module for php5
php5-snmp - SNMP module for php5
php5-sqlite - SQLite module for php5
php5-tidy - tidy module for php5
php5-xmlrpc - XML-RPC module for php5
php5-xsl - XSL module for php5
php5-adodb - Extension optimising the ADOdb database abstraction library
php5-auth-pam - A PHP5 extension for PAM authentication
[...]

Once you decide to install the module, type:

sudo apt-get install name of the module

You can install multiple libraries at once by separating the name of each module with a space.

Congratulations! You now have LAMP stack on your droplet!

Step Four—RESULTS: See PHP on your Server

Although LAMP is installed, we can still take a look and see the components online by creating a quick php info page

To set this up, first create a new file:

sudo nano /var/www/info.php

Add in the following line:

<?php
phpinfo();
?>

Then Save and Exit.

Restart apache so that all of the changes take effect:

sudo service apache2 restart

Finish up by visiting your php info page (make sure you replace the
example ip address with your correct one): http://12.34.56.789/info.php

It should look similar to this.

original source :http://thedigilife.com/email-crawler-scrip-php-mysql/

<?php
/*
Written by: Aziz S. Hussain
Email: <a href=“mailto:azizsaleh@gmail.com” target=“_blank”>azizsaleh@gmail.com</a>
Website: <a href=“http://www.azizsaleh.com/” target=“_blank”>www.azizsaleh.com</a>
Produced under GPL License
*/
/*****/
Email address scraper based on a URL.
*/
class scraper
{
// URL that stores first URL to start
var $startURL;

// List of allowed page extensions
var $allowedExtensions = array(’.css’,’.xml’,’.rss’,’.ico’,’.js’,’.gif’,’.jpg’,’.jpeg’,’.png’,’.bmp’,’.wmv’,’.avi’,’.mp3’,’.flash’,’.swf’,’.css’);

// Which URL to scrape
var $useURL;

// Start path, for links that are relative
var $startPath;

// Set start path
function setStartPath($path = NULL){
if($path != NULL)
{
$this->startPath = $path;
} else {
$temp = explode(’/’,$this->startURL);
$this->startPath = $temp[0].’//’.$temp[2];
}
}

// Add the start URL
function startURL($theURL){
// Set start URL
$this->startURL = $theURL;
}

// Function to get URL contents
function getContents($url)
{
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible;)”);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,7);
curl_setopt($ch, CURLOPT_REFERER, ‘http://’.$this->useURL);
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 50); // times out after 50s
curl_setopt($ch, CURLOPT_POST, 0); // set POST method
$buffer = curl_exec($ch); // run the whole process
curl_close($ch);
return $buffer;
}

// Actually do the URLS
function startScraping()
{
// Get page content
$pageContent = $this->getContents($this->startURL);
echo ‘Scraping URL: ’.$this->startURL.PHP_EOL;

// Get list of all emails on page
preg_match_all(’/([w+.]*w+@[w+.]*w+[w+-w+]*.w+)/is’,$pageContent,$results);
// Add the email to the email list array
$insertCount=0;
foreach($results[1] as $curEmail)
{
$insert = mysql_query(“INSERT INTO `emaillist` (`emailadd`) VALUES (’$curEmail’)”);
if($insert){$insertCount++;}
}

echo ‘Emails found: ’.number_format($insertCount).PHP_EOL;

// Mark the page done
$insert = mysql_query(“INSERT INTO `finishedurls` (`urlname`) VALUES (’”.$this->startURL.“’)”);

// Get list of new page URLS is emails were found on previous page
preg_match_all(’/href=“([^”]+)“/Umis’,$pageContent,$results);
$currentList = $this->cleanListURLs($results[1]);

$insertURLCount=0;
// Add the list to the array
foreach($currentList as $curURL)
{
$insert = mysql_query("INSERT INTO `workingurls` (`urlname`) VALUES (’$curURL’)”);
if($insert){$insertURLCount++;}
}

echo ‘URLs found: ’.number_format($insertURLCount).PHP_EOL;
$getURL = mysql_fetch_assoc(mysql_query(“SELECT `urlname` FROM `workingurls` ORDER BY RAND() LIMIT 1”));
$remove = mysql_query(“DELETE FROM `workingurls` WHERE `urlname`=’$getURL[urlname]’ LIMIT 1”);

// Get the new page ready
$this->startURL = $getURL[‘urlname’];
$this->setStartPath();

// If no more pages, return
if($this->startURL == NULL){ return;}
// Clean vars
unset($results,$pageContent);
// If more pages, loop again
$this->startScraping();
}

// Function to clean input URLS
function cleanListURLs($linkList)
{
foreach($linkList as $sub => $url)
{
// Check if only 1 character – there must exist at least / character
if(strlen($url) <= 1){unset($linkList[$sub]);}
// Check for any javascript
if(strpos(‘javascript’,$url)){unset($linkList[$sub]);}
// Check for invalid extensions
str_replace($this->allowedExtensions,“,$url,$count);
if($count > 0){ unset($linkList[$sub]);}
// If URL starts with #, ignore
if(substr($url,0,1) == ’#’){unset($linkList[$sub]);}

// If everything is OK and path is relative, add starting path
if(substr($url,0,1) == ’/’ || substr($url,0,1) == ’?’ || substr($url,0,1) == ’=’){
$linkList[$sub] = $this->startPath.$url;
}
}
return $linkList;
}
}
?>

—————————————————————————————–

—————————————————————————————–

<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN" “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”>
</head>
<body>
<?php
error_reporting(0);
$DB_USER = ‘root’;
$DB_PASSWORD = “;
$DB_HOST = ‘localhost’;
$DB_NAME = ‘test’;
$dbc = mysql_connect ($DB_HOST, $DB_USER, $DB_PASSWORD) or $error = mysql_error();
mysql_select_db($DB_NAME) or $error = mysql_error();
mysql_query("SET NAMES `utf8`”) or $error = mysql_error();
if($error){ die($error);}

include(‘emailcrawler.php’);

$new = new scraper;
// Start Path can be empty, which will be extracted from the start URL
$new->setStartPath();
//$new->setStartPath(‘http://geekiest.net’);
$new->startURL(‘http://geekiest.net/beautifulmails/’);
$new->startScraping();
?>
</body>
</html>

original source :http://thedigilife.com/email-crawler-scrip-php-mysql/

<?php
/*
Written by: Aziz S. Hussain
Email: <a href=”mailto:azizsaleh@gmail.com” target=”_blank”>azizsaleh@gmail.com</a>
Website: <a href=”http://www.azizsaleh.com/” target=”_blank”>www.azizsaleh.com</a>
Produced under GPL License
*/
/*****/
Email address scraper based on a URL.
*/
class scraper
{
// URL that stores first URL to start
var $startURL;

// List of allowed page extensions
var $allowedExtensions = array(‘.css’,’.xml’,’.rss’,’.ico’,’.js’,’.gif’,’.jpg’,’.jpeg’,’.png’,’.bmp’,’.wmv’,’.avi’,’.mp3’,’.flash’,’.swf’,’.css’);

// Which URL to scrape
var $useURL;

// Start path, for links that are relative
var $startPath;

// Set start path
function setStartPath($path = NULL){
if($path != NULL)
{
$this->startPath = $path;
} else {
$temp = explode(‘/’,$this->startURL);
$this->startPath = $temp[0].’//’.$temp[2];
}
}

// Add the start URL
function startURL($theURL){
// Set start URL
$this->startURL = $theURL;
}

// Function to get URL contents
function getContents($url)
{
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible;)”);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,7);
curl_setopt($ch, CURLOPT_REFERER, ‘http://’.$this->useURL);
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 50); // times out after 50s
curl_setopt($ch, CURLOPT_POST, 0); // set POST method
$buffer = curl_exec($ch); // run the whole process
curl_close($ch);
return $buffer;
}

// Actually do the URLS
function startScraping()
{
// Get page content
$pageContent = $this->getContents($this->startURL);
echo ‘Scraping URL: ‘.$this->startURL.PHP_EOL;

// Get list of all emails on page
preg_match_all(‘/([w+.]*w+@[w+.]*w+[w+-w+]*.w+)/is’,$pageContent,$results);
// Add the email to the email list array
$insertCount=0;
foreach($results[1] as $curEmail)
{
$insert = mysql_query(“INSERT INTO `emaillist` (`emailadd`) VALUES (‘$curEmail’)”);
if($insert){$insertCount++;}
}

echo ‘Emails found: ‘.number_format($insertCount).PHP_EOL;

// Mark the page done
$insert = mysql_query(“INSERT INTO `finishedurls` (`urlname`) VALUES (‘”.$this->startURL.”’)”);

// Get list of new page URLS is emails were found on previous page
preg_match_all(‘/href=”([^”]+)”/Umis’,$pageContent,$results);
$currentList = $this->cleanListURLs($results[1]);

$insertURLCount=0;
// Add the list to the array
foreach($currentList as $curURL)
{
$insert = mysql_query(“INSERT INTO `workingurls` (`urlname`) VALUES (‘$curURL’)”);
if($insert){$insertURLCount++;}
}

echo ‘URLs found: ‘.number_format($insertURLCount).PHP_EOL;
$getURL = mysql_fetch_assoc(mysql_query(“SELECT `urlname` FROM `workingurls` ORDER BY RAND() LIMIT 1”));
$remove = mysql_query(“DELETE FROM `workingurls` WHERE `urlname`=’$getURL[urlname]’ LIMIT 1”);

// Get the new page ready
$this->startURL = $getURL[‘urlname’];
$this->setStartPath();

// If no more pages, return
if($this->startURL == NULL){ return;}
// Clean vars
unset($results,$pageContent);
// If more pages, loop again
$this->startScraping();
}

// Function to clean input URLS
function cleanListURLs($linkList)
{
foreach($linkList as $sub => $url)
{
// Check if only 1 character – there must exist at least / character
if(strlen($url) <= 1){unset($linkList[$sub]);}
// Check for any javascript
if(strpos(‘javascript’,$url)){unset($linkList[$sub]);}
// Check for invalid extensions
str_replace($this->allowedExtensions,”,$url,$count);
if($count > 0){ unset($linkList[$sub]);}
// If URL starts with #, ignore
if(substr($url,0,1) == ‘#’){unset($linkList[$sub]);}

// If everything is OK and path is relative, add starting path
if(substr($url,0,1) == ‘/’ || substr($url,0,1) == ‘?’ || substr($url,0,1) == ‘=’){
$linkList[$sub] = $this->startPath.$url;
}
}
return $linkList;
}
}
?>

————————————————————————————————————————————-

————————————————————————————————————————————-

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”>
</head>
<body>
<?php
error_reporting(0);
$DB_USER = ‘root’;
$DB_PASSWORD = ”;
$DB_HOST = ‘localhost’;
$DB_NAME = ‘test’;
$dbc = mysql_connect ($DB_HOST, $DB_USER, $DB_PASSWORD) or $error = mysql_error();
mysql_select_db($DB_NAME) or $error = mysql_error();
mysql_query(“SET NAMES `utf8`”) or $error = mysql_error();
if($error){ die($error);}

include(‘emailcrawler.php’);

$new = new scraper;
// Start Path can be empty, which will be extracted from the start URL
$new->setStartPath();
//$new->setStartPath(‘http://geekiest.net’);
$new->startURL(‘http://geekiest.net/beautifulmails/’);
$new->startScraping();
?>
</body>
</html>

original source : http://stackoverflow.com/questions/14327409/changes-to-upload-max-filesize-in-ubunutu-php-ini-will-not-take-effect

This message helped me:

The newest php version installed on server does not allow global settings (such as execution time, max upload filesize, max post file size, etc.) to be changed.

Folow these steps to resolve the issue:

  1. Eval phpinfo();
  2. Search for ‘Scan this dir for additional .ini files’ text in phpinfo() output
  3. It will be something like this /etc/php5/apache2/conf.d
  4. Create your user.ini file inside the dir. (/etc/php5/apache2/conf.d/user.ini)
  5. Use this ini file for custom settings.
  6. Restart the server

File /etc/php5/apache2/conf.d/user.ini

post_max_size = 90Mupload_max_filesize = 50M

original source : http://stackoverflow.com/questions/14327409/changes-to-upload-max-filesize-in-ubunutu-php-ini-will-not-take-effect

This message helped me:

The newest php version installed on server does not allow global settings (such as execution time, max upload filesize, max post file size, etc.) to be changed.

Folow these steps to resolve the issue:

  1. Eval phpinfo();
  2. Search for ‘Scan this dir for additional .ini files’ text in phpinfo() output
  3. It will be something like this /etc/php5/apache2/conf.d
  4. Create your user.ini file inside the dir. (/etc/php5/apache2/conf.d/user.ini)
  5. Use this ini file for custom settings.
  6. Restart the server

File /etc/php5/apache2/conf.d/user.ini

post_max_size = 90Mupload_max_filesize = 50M