The allow_url_fopen is a filesystem and streams configuration option.
It enables the URL-aware fopen() wrappers that enable accessing URL objects like files.
If allow_url_fopen() is enabled then we can access the remote files using the FTP or HTTP protocol.
The extensions like zlib may register additional wrappers.
We are going to see:
What is the issue if allow_url_fopen is disabled? What is the issue if allow_url_fopen is disabled?
Suppose you want to read the file with the PHP function fopen().
E.g.
// index.php
$file = fopen("http://www.example.com/", "r");
If the allow_url_fopen is disabled then you see the error:
E.g.
$ php index.php
allow_url_fopen is DISABLED.
PHP Warning: fopen(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in C:\xampp\htdocs\tutorials\index.php on line 9
PHP Stack trace:
PHP 1. {main}() C:\xampp\htdocs\tutorials\index.php:0
PHP 2. fopen() C:\xampp\htdocs\tutorials\index.php:9
Warning: fopen(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in C:\xampp\htdocs\tutorials\index.php on line 9
Call Stack:
0.4036 406560 1. {main}() C:\xampp\htdocs\tutorials\index.php:0
0.4037 406592 2. fopen() C:\xampp\htdocs\tutorials\index.php:9
Variables in local scope (#1):
$file = *uninitialized*
PHP Warning: fopen(http://www.example.com/): failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\tutorials\index.php on line 9
PHP Stack trace:
PHP 1. {main}() C:\xampp\htdocs\tutorials\index.php:0
PHP 2. fopen() C:\xampp\htdocs\tutorials\index.php:9
Warning: fopen(http://www.example.com/): failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\tutorials\index.php on line 9
Call Stack:
0.4036 406560 1. {main}() C:\xampp\htdocs\tutorials\index.php:0
0.4037 406592 2. fopen() C:\xampp\htdocs\tutorials\index.php:9
Variables in local scope (#1):
$file = *uninitialize
Error in Composer Update Error in Composer Update
You may see a similar error in the command line something like:
$ composer update Loading composer repositories with package information The "https://repo.packagist.org/packages.json" file could not be downloaded: allow_url_fopen must be enabled in php.ini (https:// wrapper is disabled in the server configuration by allow_url_fopen=0 failed to open stream: no suitable wrapper could be found) https://repo.packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date Updating dependencies (including require-dev) [Composer\Downloader\TransportException] The "http://repo.packagist.org/p/scribu/lib-posts-to-posts%24375806a5270591820170d67f4467d3f709c9e02e790b81753f82c8c15ea5cebd.json" file could not be downloaded: allow_url_fopen must be enabled in php.ini (http:// wrapper is disabled in the server configuration by allow_url_fopen=0 failed to open stream: no suitable wrapper could be found) update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [--with-dependencies] [--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] []…
Both errors are the same and point to the allow_url_fopen option.
Check the allow_url_fopen is enabled or disabled Check the allow_url_fopen is enabled or disabled
We see how we get an error if the allow_url_fopen is disabled.
Now, Let’s see how to check whether the allow_url_fopen is Enabled or Disabled on the server.
To check it, PHP gives us the function ini_get().
The ini_get() allows us to get the value of our server configuration option.
We can use it as:
ini_get( 'allow_url_fopen' )
Enable the allow_url_fopen Enable the allow_url_fopen
We have two ways to enable the allow_url_fopen on the server.
Enable the allow_url_fopen with .ini file Enable the allow_url_fopen with .ini file
- Open the
php.inifile - Search for
allow_url_fopen
If you find it as:
allow_url_fopen = Off
then, replace Off with On text as:
allow_url_fopen = On
(NOTE: If you have not found the allow_url_fopen then you simply add the same code as allow_url_fopen=On which enable it.)
How to confirm whether the allow_url_fopen is enabled or not?
You can check it with the condition ini_get( 'allow_url_fopen' ).
E.g.
// index.php
if ( ini_get( 'allow_url_fopen' ) ) {
echo 'allow_url_fopen is Enabled';
} else {
echo 'allow_url_fopen is Disabled';
}
Now execute the file in command prompt as:
$ php index.php allow_url_fopen is ENABLED.
Enable the allow_url_fopen with .htaccess file Enable the allow_url_fopen with .htaccess file
Same as the .ini file you can set the value in the .htaccess file as:
php_value allow_url_fopen On
How to confirm?
Do the same as the above example.
Disable the allow_url_fopen Disable the allow_url_fopen
We have two ways to disable the allow_url_fopen on the server.
Disable the allow_url_fopen with .ini file Disable the allow_url_fopen with .ini file
allow_url_fopen = Off
Disable the allow_url_fopen with .htaccess file Disable the allow_url_fopen with .htaccess file
php_value allow_url_fopen Off
php_value allow_url_fopen On