Question

I try to the get source of a page using file_get_contents() via proxy using the following code

$aContext = array(
'http' => array(
    'proxy' => 'tcp://proxy.ssn.net:8080',
    'request_fulluri' => true,
),);
$cxContext = stream_context_create($aContext);
$homepage = file_get_contents('http://www.indiaglitz.com/channels/tamil/reviews.asp', False, $cxContext);
echo $homepage;

This works when i execute the php file via terminal, but i don't get the output when i run the file through browser using httpd(Apache 2).

This works in Apache2 installed in Ubuntu, but not in httpd installed in Fedora 17.

Where is the mistake??

Was it helpful?

Solution

The most common cause of this is SELinux not permitting httpd to make network connections.

To resolve it, you need to change an SELinux boolean value (which will automatically persist across reboots). You may also want to restart httpd to reset the proxy worker, although this isn't strictly required.

setsebool -P httpd_can_network_connect 1

OTHER TIPS

So I see that one server works on your ubuntu, but not on the fedora server. The fedora server probably has the option Allow_url_fopen (file_get_contents uses fopen()) turned off in its php settings. http://php.net/manual/en/filesystem.configuration.php

BUT! Don't change that security setting. If you want to download something, curl works well without opening the security hole.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top