Help with PHP and shell_exec!!!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with PHP and shell_exec!!!
# 1  
Old 02-14-2010
Help with PHP and shell_exec!!!

Hi, I've been working on a PHP script which is "supposed" to find an individuals weather based on their geolocation. This script uses "shell_exec".

I have checked my syntax and it is correct, but there is still something missing; for when I call on the script using:
Code:
<form action='/weather.php' method='get'><br>
<input type='submit' name='submit' value='Check'><br>
</form>

I get a blank page Smilie

Here is my script:
Code:
<?php

function getWeather() {
$ip = $_SERVER['REMOTE_ADDR']; 
$geo = shell_exec("/usr/bin/curl -s api.hostip.info/get_html.php?ip=$ip | /usr/bin/sed -e '1d;3d' -e's|C.*:||' -e's/...\(.*\)/\1/' -e's|-|%2d|' -e's/ /%20/' -e\s/'/%27/'");
$getAddress = "http://www.google.com/ig/api?weather=$geo";
$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->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();

?>

I'm a bit of a noob when it comes to this, so any help would be greatly appreciated. Thanks.

Jared

Last edited by o0110o; 02-14-2010 at 04:46 PM.. Reason: Typo
# 2  
Old 02-14-2010
A blank page when calling a PHP script often means a fatal PHP error.

What does your PHP error log file say?

---------- Post updated at 01:54 ---------- Previous update was at 01:43 ----------

Also.....

I would not use PHP shell exec to execute cURL. I would use the normal PHP cURL function.
# 3  
Old 02-16-2010
[RESOLVED]
I ended up getting this script to work with
file_get_contents and preg_match instead of cURL and SED.

Thanks for your help Smilie
# 4  
Old 02-16-2010
Normally when people post here and then they solve their problem, they post back with the solution, so others can benefit.

This is the second post of yours I have seen where you simply post back, "Problem Solved, Thanks!"

This is not the way to thank people. The proper way to thank the community is to post back your working code, the solution, so others can benefit.

Please post your working code. Thanks.
# 5  
Old 02-16-2010
Quote:
Originally Posted by Neo
Normally when people post here and then they solve their problem, they post back with the solution, so others can benefit.

This is the second post of yours I have seen where you simply post back, "Problem Solved, Thanks!"

This is not the way to thank people. The proper way to thank the community is to post back your working code, the solution, so others can benefit.

Please post your working code. Thanks.
Well I WAS going to post the polished script under a different title because the script no longer uses "shell_exec()" , but I have no problem posting the WIP for now, so here it is:
Code:
<?php

function getWeather($ip=false) {
    
   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";
    $geo = file_get_contents($url);
    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();

?>

Now maybe you can help me "beautify" the final output?
I would like for this to look nice for people and right now it's messy Smilie
See here:
Code:
http://thefeedcast.net/knooph.com/x/weather.php

Thanks again Smilie

Last edited by o0110o; 02-16-2010 at 03:02 PM.. Reason: Link FIXED
# 6  
Old 02-16-2010
Well, first of all, you will get much faster performance if you use the PHP function cURL() and not get_file_contents().

Here are some sample benchmarks from stackoverflow, file_get_contents VS CURL, what has better performance?

Quote:
I just did some quick benchmarking on this.

Fetching google.com using file_get_contents took (in seconds):

2.31319094
2.30374217
2.21512604
3.30553889
2.30124092

CURL took:

0.68719101
0.64675593
0.64326
0.81983113
0.63956594

This was using the benchmark class from PHP Optimization – Using A Timer To Benchmark Code And Increase Speed
That's a huge difference.

FWIW, I always use curl() and not get_file_contents().
# 7  
Old 02-16-2010
Quote:
Originally Posted by Neo
Well, first of all, you will get much faster performance if you use the PHP function cURL() and not get_file_contents().

Here are some sample benchmarks from stackoverflow, file_get_contents VS CURL, what has better performance?



That's a huge difference.

FWIW, I always use curl() and not get_file_contents().
Nice, curl() sounds good. So how would I implement curl()?
Do I just replace "get_file_contents" with "curl()"?
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