We are going to see:
Introduction Introduction
allow_url_fopen
is a filesystem and streams configuration option. Which enables the URL-aware fopen()
wrappers that enable accessing URL objects like files.
If allow_url_fopen() is enabled then by default we can access remote files using the FTP or HTTP protocol.
Also, extensions like zlib may register additional wrappers.
Advertisement
[ad1]
Issue Issue
We could not use the fopen()
if the option allow_url_fopen
is DISABLED from the server.
If it is enabled then you can disable it for testing purposes by adding code allow_url_fopen=Off in your php.ini file. Also, After updating the php.ini file don’t forget to restart the apache server.
Now, Let’s assume that we have below code in the file C:/xampp/htdocs/tutorials/index.php
:
<?php
if ( ini_get( 'allow_url_fopen' ) ) {
echo "allow_url_fopen is ENABLED.\n";
} else {
echo "allow_url_fopen is DISABLED.\n";
}
$file = fopen("http://www.example.com/", "r");
Note: We can use function
ini_get()
https://www.php.net/manual/en/function.ini-get.php to check the value of a server configuration. We have checked the value ofallow_url_fopen
asini_get( 'allow_url_fopen' )
. By defaultallow_url_fopen
returns the boolean value.
Advertisement
[ad2]
We check the code by executing the PHP file with command line with below steps:
- Open terminal or command prompt.
- Goto
C:/xampp/htdocs/tutorials/
with commandcd C:/xampp/htdocs/tutorials/
- Now execute command
php index.php
You can see something similar in your terminal window.
$ 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
Advertisement
[ad3]
The issue with Composer Update: The issue with Composer Update:
If you try the composer update
command then you can see something like below error:
MaheshW@DESKTOP-5E1INLB C:\xampp\htdocs\developer.wordpress.org\wp-content\plugins\phpdoc-parser $ 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] [--] []…
Advertisement
[ad4]
Fix/Solution Fix/Solution
Open the php.ini
file and search allow_url_fopen
.
If you find it then change allow_url_fopen=Off
with allow_url_fopen=On
.
If you have not found the allow_url_fopen
then simply add the allow_url_fopen=On
.
After adding the allow_url_fopen=On
our server support the fopen()
.
Now execute the same code as below:
$ php index.php allow_url_fopen is ENABLED.
For more information visit: https://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen