I had a hard time finding the other perl -> php wrapper thread so I though I would start a new thread with these step by step instructions to make it easier for people who need this in the future. I will update this thread if changes are ever needed. I don't forsee any however since this just wraps Shawn's code. All you will need to update is ad_network.php and possibly coop.php if Shawn adds more tracking features in the future. I've gotten a couple PM's from people having trouble so I am including a step by step setup for the wrapper. Both for people who need to include the wrapper code in an existing perl script and for those who are doing it using an SSI include. Here are the steps I use to set it up. First I make a directory /php/ on my server where php is enabled. Then I copy Shawn's ad_network.php into that directory and create ad_network_ads.txt and make it writable by the web process. Next I create coop.php in that directory with the following contents: <?php $_SERVER['REMOTE_ADDR'] = $_REQUEST['ip']; include ('ad_network.php'); echo $ad_network[0] . ' | ' . $ad_network[1] . ' | ' . $ad_network[2] . ' | ' . $ad_network[3] . ' | ' . $ad_network[4]; ?> This is to show 5 ads with a | separating them. To only show one add delete everything after $ad_network[0] up to but not including the semi colon. If you are displaying 5 ads then as Shawn pointed out a cleaner way to do the above is to replace that whole echo line with this one: echo implode (' | ', $ad_network); Then test this page by going to it in your web browser http://www.yourserver.com/php/coop.php You should see a coop ad. If you see an ad here then all that is left to do is to add the perl wrapper portion. If you have a perl script and need to put the coop inside it without calling an outside routine here is the code you can put right inside a script. Be sure to set the full http path in the ad_url variable to where you ran coop.php in the web browser successfully. ## START perl->php wrapper code use LWP::UserAgent; # set the full http path to the ad page here: my $ad_url = qq{http://www.yourserver.com/php/coop.php}; $ad_url .= qq{?ip=} . $ENV{REMOTE_ADDR}; my $output = ''; my $ua = new LWP::UserAgent; $ua->agent("Perl-Php-Coop-Wrapper/1.2"); my $req = HTTP::Request->new(GET => $ad_url); my $res = $ua->request($req); if($res->is_success) { $output .= $res->content; } print $output; ## END perl->php wrapper code If you need to use it as a SSI and for some reason don't want to use php here is the code to put in your SSI included script. Be sure to set the full http path in the ad_url variable to where you ran coop.php in the web browser successfully. Note that number of ads and separator values are now set in the coop.php and not with parameters passed to the include as with the old perl version. #!/usr/bin/perl # $Id: coop_wrapper.cgi,v 1.2 2005/01/07 21:19:02 cvs Exp $ # $Revision: 1.2 $ use strict; use LWP::UserAgent; # set the full http path to the page here: my $ad_url = qq{http://www.yourserver.com/php/coop.php}; $ad_url .= qq{?ip=} . $ENV{REMOTE_ADDR}; my $output = ''; $output .= qq{Content-type: text/html\n\n} if($ENV{GATEWAY_INTERFACE} =~ /CGI/); my $ua = new LWP::UserAgent; $ua->agent("Perl-Php-Coop-Wrapper/1.2"); my $req = HTTP::Request->new(GET => $ad_url); my $res = $ua->request($req); if($res->is_success) { $output .= $res->content; } # uncomment this line if you are seeing Content-type: text/html in your page # $output =~ s/Content-type: text\/html//; print $output;
Clickdoc (or anyone!) Can you tell me if I am using the ssi method what I am supposed to put in the html pages themselves? Is it: [!--#include virtual="/cgi-bin/coop_wrapper.cgi?"-->] 2) Is the method above it of this: ## START perl->php wrapper code to create php pages vs html pages? I need it to be html pages because my pages on site already are made and already call cgi scripts using ssi tags. 3) For the ssi method , can I use additional domains that call this from my first domain: # set the full http path to the page here: my $ad_url = qq{http://www.yourserver.com/php/coop.php}; 4) Also to make the ad_networks txt writable is that 777 or 766 or 666? Thanks!
freedom2: This is the code to put in coop_wrapper.cgi: #!/usr/bin/perl # $Id: coop_wrapper.cgi,v 1.2 2005/01/07 21:19:02 cvs Exp $ # $Revision: 1.2 $ use strict; use LWP::UserAgent; # set the full http path to the page here: my $ad_url = qq{http://www.yourserver.com/php/coop.php}; $ad_url .= qq{?ip=} . $ENV{REMOTE_ADDR}; my $output = ''; $output .= qq{Content-type: text/html\n\n} if($ENV{GATEWAY_INTERFACE} =~ /CGI/); my $ua = new LWP::UserAgent; $ua->agent("Perl-Php-Coop-Wrapper/1.2"); my $req = HTTP::Request->new(GET => $ad_url); my $res = $ua->request($req); if($res->is_success) { $output .= $res->content; } # uncomment this line if you are seeing Content-type: text/html in your page # $output =~ s/Content-type: text\/html//; print $output; Make sure you test it at each step along the way. 1. Setup a directory that supports php and put ad_network.php, ad_network_ads.txt, and coop.php in it. Make ad_network_ads.txt writable by the web process, or just chmod 666 if you don't know who the web process is. 2. Test coop.php in your web browser. 3. Copy above code into coop_wrapper.cgi, edit $ad_url to put in the full http: url of your coop.php file that you just tested in the browser. 4. Test coop_wrapper.cgi in the browser, coop_wrapper.cgi must reside on the same host as your website, where coop.php does not have this requirement. 5. Inlude coop_wrapper.cgi with the virtual command: <!--#include virtual="/cgi-bin/coop_wrapper.cgi?" --> If you have tested each along the way and they worked then the include should work as well. Good Luck.
Hi and thank you for the help. I will try it right now (I've been up for like 8 hours trying it). Interestingly enough I actually got things to work following a different set of instructions someone posted elsewhere on forum and I saw the ads on every page too but it wouldn't validate and Shawn said Your site doesn't seem to be evaluating/seeing the $_SERVER['REMOTE_ADDR'] properly. Anyway, I will start from scratch with your method and may post again! If you do installs or can recommend someone , please email or pm me. I am losing a lot of hair!
IT worked!! You are a genius!! Thank you sooo much.. For me it didn't work initially when I tried to link directly to the coop.php file.. what worked was the wrapper method clickdoc talked about.
The only thing I can get to dispaly is the content of coop_wrapper.cgi FYI, I am trying to get the co-op ads to display on the Amazon Products Feed script pages. If anyone is familiar with that, your help is GREATLY appreciated! I have been putting the include for the APF pages on the "template" page. If the include needs to go on the cgi pages, where would it go? AJ
What version of AWS are you using? If you are using the latest, there is a mod you can use to include it within templates. I am using AWS 3 and you will need to incorporate it within your aws perl script itself and includes will not work within the script.
I am using AWS4, the version that just came out this past weekend. What mod do I need to use and where may I find it? Thanks! Andrew
I have not used it but here it is: http://www.absolutefreebies.com/phpBB2/viewtopic.php?t=7959183&highlight=
I could use a little help here: My coop.php works fine, but I'm getting "500 Internal Server Error" on the coop_wrapper.cgi. I'm not sure what I'm doing wrong. Thanks,
I used the cgi version that was posted here, and I have the correct path for my coop.php. I'm not a cgi expert, so I'm not sure what else I can look at. Any suggestions?
Yes, my suggestion is to use the PHP version supported by DP if you can. That is why I asked if you "need" to use the .cgi version.
Ok, I guess I misunderstood. I'm trying the cgi version, because I couldn't get the php version to work. What I've got is a directory, with mostly html pages, which all work fine. I have the code in a footer that calls ad_network.php and everything is great. I have some cgi pages that call html pages (add_url type pages) that I just can't get any code to work on. I've tried putting code in the html and cgi pages, and nothing works. I can see the "|"s I have between ads, but no ads are showing.
Here's what appears in my error log... if anyone can help me solve this I will be very glad. [27-Jan-2005 23:04:15] PHP Warning: file_get_contents(): URL file-access is disabled in the server configuration in /home/steps10/public_html/ad_network.php on line 37 [27-Jan-2005 23:04:15] PHP Warning: file_get_contents(http://ads.digitalpoint.com/network.php?b=www.10000-steps.com&type=link): failed to open stream: no suitable wrapper could be found in /home/steps10/public_html/ad_network.php on line 37
you say that coop.php works fine? you mean you see ads with coop.php? this error in your logs is a php error which to me means that your ISP doesn't allow you to get remote files with the file_get_contents(). however my php is limited. maybe shawn can answer that question. for your 500 error on the wrapper please post the error in the logs. have you set the coop_wrapper.cgi to mode 755? i guess i should put that in the setup steps.
Thanks for your help. I'm getting closer. I can now see the ads in coop_wrapper.cgi. I had some weirdo version of that file, so I updated it and changed it to 755. That was important. Now, hopefully my final question on this topic. The virtual include command... should that go in my cgi script that calls the html, or my html file? I can't seem to see anything when I put it in either place. Thanks,