这些是我的 PHP 应用程序myApp.php
和mypartsA/main.php
.
我的应用程序.php
<?php
echo ("##### myApp is starting now !!! </br>");
require_once('/parts/mypartsA/main.php');
?>
mypartsA/main.php
<?php
echo ("#### mypartsA is required </br>");
?>
并且myApp.php
和mypartsA/main.php
处于以下结构中。
Document_root
|
+--- test
| |
| +--- myApp.php
|
+--- parts
|
+--- mypartsA
|
+---main.php
我已经在 Windows+Apache 上使用这个应用程序一年了,没有问题,但最近我将它迁移到 CentOS+Apache,然后我得到了与相关的致命错误include_path
PHP Warning: require_once(/parts/mypartsA/main.php)
[<a href='function.require-once'>function.require-once</a>]
: failed to open stream
: No such file or directory
in /var/www/html/test/myApp.php on line 12
PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]
: Failed opening required (/parts/mypartsA/main.php’
(include_path='.:/php/includes:/usr/share/pear:/usr/share/pear/PEAR:/var/www/html')
in /var/www/html/test/myAPP.php on line 12
根据 PHP.net,如果定义了路径,则 include_path 将被忽略。 http://www.php.net/manual/en/function.include.php
我认为在我的情况下 PHP 尝试parts
从C:\
或/
不从include_path
.
require_once(/parts/mypartsA/main.php);
因此,myAPP.php
无论是在 Windows 上还是在 CentOS 上,结果都必须是致命错误。
但是我的应用程序已经在 Windows 上运行了一年,没有出现任何错误。PHP 可以parts
正确找到目录。
可以在 Windows 上尝试上面的代码并查看..
##### myApp is starting now !!!
#### mypartsA is required
或得到错误?
现在,我想知道为什么在 Windows 上运行和在 CentOS 上运行相同代码的结果不同。
我必须检查 PHP.ini 中的哪些指令?
我知道我是否更改此代码以添加绝对路径$ _SERVER['DOCUMENT_ROOT']
。
require_once($_SERVER['DOCUMENT_ROOT']./parts/mypartsA/main.php);
它会运作良好。但是有许多应用程序具有相同的编码风格,我不想全部更改。
这些是附加信息。
include_path 值 phpinfo() 在 Windows 上显示
.;C:\PHP;C:\PHP\pear;C:\Apache2.2.22\htdocs
include_path 值 phpinfo() 在 CentOS 上显示
.:/php/includes:/usr/share/pear:/usr/share/pear/PEAR:/var/www/html