简体   繁体   中英

php include_once not working for only one file

I have two folders Provider and Library in the same directory. Provider includes two php files ActiveRequests.php and PendingRequests.php . Library contains another folder Multilingual which includes Pagefactory.php and languageSession.php

- Provider
  - ActiveRequests.php
  - PendingRequests.php
- Library
  - Multilingual
    - Pagefactory.php
    - languageSession.php

I'm including PageFactory.php in ActiveRequests.php like

      include_once __DIR__ . '/../library/Multilingual/PageFactory.php'

and it is working fine.

But when I'm trying to include PageFactory.php in PendingRequests.php in the same way like

       include_once __DIR__ . '/../library/Multilingual/PageFactory.php'

it is not working.

when I tried to include the languageSession.php in Pendingrequests.php like

       include_once __DIR__ . '/../library/Multilingual/languageSession.php'

it is working fine.

Can any one help me? What could be the problem with the PageFactory.php path?

I've also tried with $_SERVER["DOCUMENT_ROOT"] but it did not work.

I've just fix a same problem, the point is if you include PageFactory.php in PendingRequests.php you have to change every file that PageFactory.php refers base on PendingRequests.php path. I fixed my problem with this way.

Try printing the path as

echo __DIR__ . '/../library/Multilingual/PageFactory.php';

In this way, you can check if the path to the file is correct!

Or use, var_dump to check the path!

To The people downvoting my answer: Printing the path is for debugging!

Or you can check the path as :

var_dump(file_exists(__DIR__ . '/../library/Multilingual/PageFactory.php'));

__DIR__ is the path to the parent directory. It gives path of Provider when used from PendingRequests.php .

I think the problem is you have used ../ .Try removing it!

For example, __DIR__ . '/../library/Multilingual/PageFactory.php' __DIR__ . '/../library/Multilingual/PageFactory.php' is identical to

path/to/Provider/../library/Multilingual/PageFactory.php

So the final answer is to remove "../" and it becomes:

__DIR__ . '/library/Multilingual/PageFactory.php'

The obvious problem is that you include the file with the following:

include_once __DIR__ . '/../library/Multilingual/PageFactory.php'

While the file is called Pagefactory.php .

On non-Windows systems, this will make a difference. Ensure that the capitalisation is correct.

This may just be a typo in your question (the amount of typos in it originally would suggest it could be!) but it may be the cause of the problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM