Help with PHP and shell_exec!!!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with PHP and shell_exec!!!
# 8  
Old 02-16-2010
You can visit the PHP man page for curl() there are plenty of examples.

You can also see my recent blog post where I implement curl in an example bit of code to check for a file in a failover scenario:

[PHP] Web Failover Code Using cURL and Shared Memory | The UNIX and Linux Forums Blog
# 9  
Old 02-16-2010
Quote:
Originally Posted by Neo
You can visit the PHP man page for curl() there are plenty of examples.

You can also see my recent blog post where I implement curl in an example bit of code to check for a file in a failover scenario:

[PHP] Web Failover Code Using cURL and Shared Memory | The UNIX and Linux Forums Blog
Thanks!

---------- Post updated at 04:25 PM ---------- Previous update was at 04:07 PM ----------

Quote:
Originally Posted by o0110o
Thanks!
So I take it I somehow have to replace get_file_contents with something like this:
Code:
 // create curl resource
        $ch = curl_init();

        // set url
        curl_setopt($ch, CURLOPT_URL, "$ip");

        //return the transfer as a string
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        // $output contains the output string
        $output = curl_exec($ch);

        // close curl resource to free up system resources
        curl_close($ch);

Forgive me for I am trying, LOL Smilie
# 10  
Old 02-16-2010
No, you need to send a URL to curl() as a argument, not an IP address.

From my example in the blog post:

Code:
define('HEARTBEAT', 'myCDNexample.com/heartbeat.html');
curl_setopt($ch, CURLOPT_URL, HEARTBEAT);

# 11  
Old 02-16-2010
Quote:
Originally Posted by Neo
No, you need to send a URL to curl() as a argument, not an IP address.

From my example in the blog post:

Code:
define('HEARTBEAT', 'myCDNexample.com/heartbeat.html');
curl_setopt($ch, CURLOPT_URL, HEARTBEAT);

This works:
Code:
<?php

function getWeather() {
    
   if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $url = "http://api.hostip.info/get_html.php?ip=$ip";
    define('LOCALE', $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, LOCALE);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);
    $geo = curl_exec($ch);
    curl_close($ch);
    if( preg_match('/City: (.*)\nIP:/', $geo, $matches) ){
        $results = $matches[1];
    }else{
        $results = 'getLocation failure';

    }

$location = urlencode($results);
$getAddress = "http://www.google.com/ig/api?weather=$location";
$xml_str = file_get_contents($getAddress,0);
$xml = new SimplexmlElement($xml_str);
$count = 0;
echo '<div id="weather">';
foreach($xml->weather as $item) {

foreach($item->forecast_information as $new) {
            echo $new->city['data'];
            }

        foreach($item->current_conditions as $new) {

            echo '<div class="weatherIcon">';
            echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>';
	    echo $new->condition['data'];
            echo $new->temp_f['data'];
            echo $new->temp_c['data'];
            echo $new->humidity['data'];
            echo $new->wind_condition['data'];
            echo '</div>';
            }

        foreach($item->forecast_conditions as $new) {

            echo '<div class="weatherIcon">';
            echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>';
            echo $new->day_of_week['data'];
            echo $new->condition['data'];
            echo $new->low['data'];
            echo $new->high['data'];
            echo '</div>';
            }

    }

echo '</div>';
}

getWeather();

?>

Have I missed anything?

Last edited by o0110o; 02-16-2010 at 04:34 PM.. Reason: Updated Information
# 12  
Old 02-16-2010
Yes,

First of all, PHP define() is used for constants, not variables, so you can't use a variable to define a constant Smilie

Second, you are still using get_file_content() in another part of the script to get the contents of a URL. Change that to another curl() call. Maybe you can create a small function?

Remember, define() is only for constants. In my script, my URL is a constant, yours is a variable so you should not use define(). My code is example code and my example uses a constant, but your code uses a variable. (Hint: pass $url to curl(), not LOCALE).

---------- Post updated at 20:50 ---------- Previous update was at 20:40 ----------

For example.....

Code:
define('HOSTIP_QUERY', 'http://api.hostip.info/get_html.php?ip=');

// blah blah

$url = HOSTIP_QUERY.$ip;
curl_setopt($ch, CURLOPT_URL, $url);

define() statements (for constants) should be at the top of the script, or in a config file you read when the script start Smilie
# 13  
Old 02-16-2010
Quote:
Originally Posted by Neo
Yes,

First of all, PHP define() is used for constants, not variables, so you can't use a variable to define a constant Smilie

Second, you are still using get_file_content() in another part of the script to get the contents of a URL. Change that to another curl() call. Maybe you can create a small function?

Remember, define() is only for constants. In my script, my URL is a constant, yours is a variable so you should not use define(). My code is example code and my example uses a constant, but your code uses a variable. (Hint: pass $url to curl(), not LOCALE).

---------- Post updated at 20:50 ---------- Previous update was at 20:40 ----------

For example.....

Code:
define('HOSTIP_QUERY', 'http://api.hostip.info/get_html.php?ip=');

// blah blah

$url = HOSTIP_QUERY.$ip;
curl_setopt($ch, CURLOPT_URL, $url);

define() statements (for constants) should be at the top of the script, or in a config file you read when the script start Smilie
This works:
Code:
<?php

    define('QUERY_0', 'http://api.hostip.info/get_html.php?ip=');
    define('QUERY_1', 'http://www.google.com/ig/api?weather=');

function getWeather() {
    
   if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    $url0 = QUERY_0.$ip;
    $ch0 = curl_init();
    curl_setopt($ch0, CURLOPT_URL, $url0);
    curl_setopt($ch0, CURLOPT_HEADER, 0);
    curl_setopt($ch0, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch0, CURLOPT_FAILONERROR, TRUE);
    $geo = curl_exec($ch0);
    curl_close($ch0);
    if( preg_match('/City: (.*)\nIP:/', $geo, $matches) ){
        $results = $matches[1];
    }else{
        $results = 'getLocation failure';

    }

    $location = urlencode($results);
    $url1 = QUERY_1.$location;
    $ch1 = curl_init();
    curl_setopt($ch1, CURLOPT_URL, $url1);
    curl_setopt($ch1, CURLOPT_HEADER, 0);
    curl_setopt($ch1, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch1, CURLOPT_FAILONERROR, TRUE);
    $xml_str = curl_exec($ch1);
    curl_close($ch1);
$xml = new SimplexmlElement($xml_str);
echo '<div id="weather">';
foreach($xml->weather as $item) {

foreach($item->forecast_information as $new) {
            echo $new->city['data'];
            }

        foreach($item->current_conditions as $new) {

            echo '<div class="weatherIcon">';
            echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>';
        echo $new->condition['data'];
            echo $new->temp_f['data'];
            echo $new->temp_c['data'];
            echo $new->humidity['data'];
            echo $new->wind_condition['data'];
            echo '</div>';
            }

        foreach($item->forecast_conditions as $new) {

            echo '<div class="weatherIcon">';
            echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>';
            echo $new->day_of_week['data'];
            echo $new->condition['data'];
            echo $new->low['data'];
            echo $new->high['data'];
            echo '</div>';
            }

    }

echo '</div>';
}

getWeather();

?>

So how would I format the layout of the output page? See here:
Code:
Link Removed.

I just want to organize it better and label the output text (ie. Humidity, Conditions,Wind, etc...

Last edited by o0110o; 02-16-2010 at 06:14 PM.. Reason: New URL
# 14  
Old 02-16-2010
No idea.... I don't see any output from here.....
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Shell_exec is not working

I am trying to execute a command with shell_exec but this command does not work, other commands work <?php $output = shell_exec("tail /var/log/syslog"); echo "<pre>$output</pre>"; ?> (4 Replies)
Discussion started by: Rodrigo_Bueno
4 Replies

2. Shell Programming and Scripting

Sqlplus with shell_exec(); PHP command

Hi, I need to run a PL/SQL Query from a distant oracle server in order to create spool files and send it to my own server, using a php script. I firstly created a SH script called myscript.sh #!/bin/bash echo "This script is working" sqlplus... (8 Replies)
Discussion started by: cgstag
8 Replies

3. Red Hat

Update php 4.3 RPM to php 5.3.3 php

Dear All, My redhat version is: # cat /etc/redhat-release Red Hat Enterprise Linux AS release 4 (Nahant Update 4) # # uname -a Linux cotapplication3.cot.com 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:32:02 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux # I want to update my php from: # php... (1 Reply)
Discussion started by: monojcool
1 Replies

4. Web Development

php shell_exec

Hey guys i've recently been getting into php programming and i became thinking was it possible to create a php script that would allow you to run a terminal from the browser page? All i've pretty much got so far is: $var = $_GET; $output = php shell_exec($var); echo $output; ... (4 Replies)
Discussion started by: lordfirex
4 Replies

5. Shell Programming and Scripting

Passing array variable in shell_exec

Hi all, i wrote a php script in which i passed some values in the array variable using a for loop. I have to pass this array values to a shell script using shell_exec() <?php while($row = mysql_fetch_assoc($ansid)) { //$row = mysql_fetch_assoc($ansid); $aid = $row; echo $aid; $i =... (2 Replies)
Discussion started by: vidhyaS
2 Replies

6. Shell Programming and Scripting

c binary not being executed with shell_exec()

I have written a c program. And compiled it to make a binary. Now when i try to call this binary from php page, it is not being executed. [ (2 Replies)
Discussion started by: xerox
2 Replies

7. Web Development

trouble with shell_exec()

If you aren't familiar with LaTeX, don't stress.. it's just a document markup language that I use for creating Math documents. Anyway, if I execute "latex /home/destructo/Desktop/example.tex" inside my command prompt (ubuntu), it will create the desired document... I decided to try to create a... (3 Replies)
Discussion started by: tyrick
3 Replies

8. Programming

Calling macro in shell_exec not working

Hi guys! I really need your help. I have a php code that should convert doc, ppt,etc. to pdf using openoffice. But its not working, and im not sure what the problem is. Here's my php code: define('OOFFICE_LIBRARY', '/usr/lib/openoffice.org/program/'); $convertToPdf = OOFFICE_LIBRARY .... (5 Replies)
Discussion started by: tweine
5 Replies

9. Shell Programming and Scripting

php shell_exec, exec command timeout

HI, Does anybody know if its possible to execute a command through exec, shell exec, system and if the program doesn't terminate in N seconds returns control to PHP ? reg, research3 ---------- Post updated 10-16-09 at 12:20 AM ---------- Previous update was 10-15-09 at 11:03 PM... (1 Reply)
Discussion started by: research3
1 Replies
Login or Register to Ask a Question