문제

Working on a win2008/IIS7 server, this php include statement was valid:

include('/path/file.php');

Moving over to a shared Linux CPanel server, it is not. I have to instead do this:

include('path/file.php');

When I first wrote the code, I was under the impression that the opening / meant to go from the root folder from which initial file was being accessed. Is this something that can be set int he .ini file? It is PHP version specific?

도움이 되었습니까?

해결책

The first/ in IIS refers to the root folder of the domain/localhost. For example, you can access the page with your browser like this: http://localhost/path/file.php

The second form, without the / means that the URL is relative from the folder of the page that includes file.php go to sub-folder path and there find the file.

I believe that the folder structure is different between the machines: on the unix machine, it's deployed under: http://www.youdomain.com/somefolder/HERE

다른 팁

If the error that you get is file cannot be found when you say that it was invalid, it is because that PHP determines the searches for the file based on the include_path configuration in your php.ini.

you can read about it more in: http://www.php.net/manual/en/ini.core.php#ini.include-path

Actually the / as a directory separator is even not a reliable. You should use the DIRECTORY_SEPARATOR constant.

to address this, you need to modify your include_path to:

Unix

include_path=".:/path"

Windows

include_path=".;c:\path"

rewrite your code,

include('file.php');

the directory would be relative to the *.php file where you do the include or require call.

In your above case, for 'path/file.php'. I assume the file (lets say index.php) where you have the include for 'path/file.php', the file should be on the same directory as in 'path'.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top