我正在开发一个php项目,我遇到包含文件的问题。
我有一个php脚本,位于myapp / reports / index.php。提交表单时,它会向位于myapp / reports / phpHander / submit.php的另一个phpscript执行ajax发布。
Submit.php然后必须包含一个用于发送电子邮件的PHP脚本。这样做是为了确保可以反复使用相同的代码,而无需在每次需要时对其进行输入。这个php脚本位于../../ administrator / classes / send.php。
到目前为止工作正常,但send.php脚本包含另一个文件来获取应用程序配置设置,该文件位于administrator / appConfig.php中。问题是即使我输入http://localhost/myapp/administrator/appConfig.php的完整网址,也找不到这个appConfig.php。
我做错了什么。我正在使用php include函数来执行此操作并且其工作用于其他所有内容,但它似乎有问题,然后包括来自不同位置的另一个脚本。
感谢您提供的任何帮助。
答案 0 :(得分:5)
http://localhost/myapp/administrator/appConfig.php
只是网址路径。
您需要绝对文件路径,例如C:/wamp/www/myapp/administrator/appConfig.php
(Windows)或/var/www/myapp/administrator/appConfig.php
(Linux)
无论如何最好的方法是在你的根应用程序目录中使用常量生成一个文件“dirs.php”:
define('ROOT_DIR', dirname(__FILE__));
其中dirname(__FILE__)
将是您的app目录的绝对路径。
有了这些知识,你可以用这种方式包含文件:
的myapp /报告/ index.php的:
require_once('../../dirs.php');
include(ROOT_DIR . '/administrator/appConfig.php');
的myapp /报告/ phpHander / submit.php:
require_once('../../../dirs.php');
include(ROOT_DIR . '/administrator/appConfig.php');
答案 1 :(得分:1)
当您包含另一个PHP脚本时,所有路径都相对于调用脚本。因此,听起来好像您的脚本位于myapp / reports / phpHander / submit.php,并包含../../administrator/classes/send.php,然后在同一目录中包含另一个脚本。在这种情况下,您需要使用路径“../../administrator/appConfig.php”。或者,您可以使用相对于文件系统根目录的绝对路径。