我快疯了。
我在本地有一个简单的网站,带有联系人表单功能,只需PHP即可完美工作。
现在我想通过AJAX调用它,但由于相对路径的原因,我总是会出错。
问题是,ajax调用的php文件有两个require_one,这在那时是不起作用的。
我知道我应该使用绝对路径来实现它,我尝试了不同帖子建议的不同方法,但都导致了错误。
我试过使用
require_once __DIR__ . 'app/config/settings.php';
我在index.php中使用define('ROOT_SYS',dirname(__FILE__).'/');
进行ajax调用,并在php文件中有如下需求:require_once ROOT_SYS . 'class/model/contactForm.php';
许多其他方法,如本问题中推荐的PHP,包括最佳实践问题,但都没有成功。我让它们都在php端工作,但当我使用ajax时,它总是会导致一个错误,比如:
注意:在G:''examplep''htdocs''website.de''app''class''controller''contactForm.php中使用未定义的常量ROOT_SYS-假定为"ROOT_SYS"
警告:require_one(ROOT_SYSclass/model/contactForm.php):无法打开流:在G:''examplep''htdocs''website.de''app''class''controller''contactForm.php中没有这样的文件或目录
致命错误:requireonce():无法在G:''xamp''htdocs''website.de''app''class''controller''contactForm.php的6
上打开所需的ROOT_SYSclass/model/contactForm.php(include_path='.;G:''xamplep''php''PEAR')
或
警告:require_one(app/class/model/contactForm.php):无法打开流:在G:''examplep''htdocs''website.de''app''class''controller''contactForm.php中没有这样的文件或目录6
致命错误:requireonce():无法在G:''xamp''htdocs''website.de''app''class''controller''contactForm.php的6
行打开所需的"app/calass/model/contactForm.php"(include_path='.;G:''xamplep''php''PEAR')
常量未定义,因为它未包含在内,或者打开流失败。
我的意思是,必须有办法在被调用方的PHP文件中使用require_once
。
你有什么经验可以和我分享吗?我现在真的很绝望(
我的文件夹结构如下:
app
-class
--controller
--helper
--model
--view
-config
-template
docroot
lib
system
-css
-js
index.php
我在localhost:上的项目路径
G:'xampp'htdocs'website.de
http://localhost/website.de/
我的ajax调用
$.ajax({
type: "POST",
url: "app/class/controller/contactForm.php",
data: content
})
在名为contactForm.php的文件中,我从一开始就需要它们。
require_once 'app/class/model/contactForm.php';
require_once 'app/config/settings.php';
必须有某种方法使其工作,最好是使用在本地和Web服务器上工作的设置。
我知道这是一本很值得阅读的书,所以谢谢你抽出时间!!
使用__DIR__
是可行的方法。你应该详细阐述一下这句话:
require_once __DIR__ . 'app/config/settings.php';
我想你只是错过了/
,因为__DIR__
会给你一条没有后面/
的路径。应该是:
require_once __DIR__ . '/app/config/settings.php';