Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP项目相对路径和URL_Php_Relative Path - Fatal编程技术网

PHP项目相对路径和URL

PHP项目相对路径和URL,php,relative-path,Php,Relative Path,我在做一个项目。这是一个管理网站的控制面板。 文件夹结构如下所示: DEFINE(HOST_NAME, $_SERVER['SERVER_NAME']); DEFINE(WEB_SERVER_ROOT, $_SERVER['DOCUMENT_ROOT']); DEFINE(APP_ROOT, __DIR__); DEFINE(URI_BASE, str_replace(WEB_SERVER_ROOT, '', APP_ROOT); if ($_SERVER['HTTPS'] == 'on') {

我在做一个项目。这是一个管理网站的控制面板。 文件夹结构如下所示:

DEFINE(HOST_NAME, $_SERVER['SERVER_NAME']);
DEFINE(WEB_SERVER_ROOT, $_SERVER['DOCUMENT_ROOT']);
DEFINE(APP_ROOT, __DIR__);
DEFINE(URI_BASE, str_replace(WEB_SERVER_ROOT, '', APP_ROOT);
if ($_SERVER['HTTPS'] == 'on') {
    DEFINE(PROTOCOL, 'http');
} else {
    DEFINE(PROTOCOL, 'https');
}
DEFINE(URL_BASE, PROTOCOL . '://' . URI_BASE);
根 图像 css js 模块 使用者 类别 等 index.php config.php 我在配置文件中设置了一些设置,其中一些是:

$site_url = $_SERVER['SERVER_NAME'];
define ('ABSPATH', 'http://'.$site_url.'/cpanel');
所以,我的问题是:如何加载所有资源图像、css、相对于ABSPATH常量的js以及所有标记


有了这个,我可以将cpanel项目移动到另一个目录级别,它仍然可以工作。与Wordpress博客一样,只设置博客URL。

有几种方法可以实现您所说的,但最简单的方法之一是使用基本标记

<head>
<base href="http://www.yoursitewithimages.com/folder-with-files/" target="_blank">
</head>
那你就可以用

<img src="img/image.jpg">
它将被解读为

<img src="http://www.yoursitewithimages.com/folder-with-files/img/image.jpg">

更多信息请参见此处或此处

有几种方法可以实现您所说的,但最简单的方法之一是使用BASE标记

<head>
<base href="http://www.yoursitewithimages.com/folder-with-files/" target="_blank">
</head>
那你就可以用

<img src="img/image.jpg">
它将被解读为

<img src="http://www.yoursitewithimages.com/folder-with-files/img/image.jpg">

更多信息请点击此处或此处

在您的php视图中,您是否可以这样做

<script type="text/javascript" src="<?= ABSPATH ?>/my_js_file.js"></script>
<link rel="stylesheet" type="text/css" href="<?= ABSPATH ?>/my_css_file.css">

<img src="<?= ABSPATH ?>/my_image_file.jpg" />

这样,您可以将目录移动到docroot中的任何位置,只需在配置文件中更改ABSPATH的值。

您是否可以在php视图中执行类似操作

<script type="text/javascript" src="<?= ABSPATH ?>/my_js_file.js"></script>
<link rel="stylesheet" type="text/css" href="<?= ABSPATH ?>/my_css_file.css">

<img src="<?= ABSPATH ?>/my_image_file.jpg" />

通过这种方式,您可以将目录移动到docroot中的任何位置,只需更改配置文件中ABSPATH的值。

您最好定义几个不同的变量,因为对于包含等目的,URL是没有用处的。您可以这样做:

DEFINE(HOST_NAME, $_SERVER['SERVER_NAME']);
DEFINE(WEB_SERVER_ROOT, $_SERVER['DOCUMENT_ROOT']);
DEFINE(APP_ROOT, __DIR__);
DEFINE(URI_BASE, str_replace(WEB_SERVER_ROOT, '', APP_ROOT);
if ($_SERVER['HTTPS'] == 'on') {
    DEFINE(PROTOCOL, 'http');
} else {
    DEFINE(PROTOCOL, 'https');
}
DEFINE(URL_BASE, PROTOCOL . '://' . URI_BASE);
对于includes,您可以执行以下操作:

include(APP_ROOT . '/modules/somefile.php');
<img src="<?php echo URL_BASE; ?>/images/someimage.jpg" />
<a href="<?php echo URL_BASE; ?>/somepage">Some Page</a>
<script type="text/javascript" src="<?php echo URL_BASE; ?>/js/somejs.js" />
对于输出图像、javascript、css等链接,您可以使用以下内容:

include(APP_ROOT . '/modules/somefile.php');
<img src="<?php echo URL_BASE; ?>/images/someimage.jpg" />
<a href="<?php echo URL_BASE; ?>/somepage">Some Page</a>
<script type="text/javascript" src="<?php echo URL_BASE; ?>/js/somejs.js" />

您最好定义几个不同的变量,因为有一个URL对于include之类的目的来说是没有用处的。您可以这样做:

DEFINE(HOST_NAME, $_SERVER['SERVER_NAME']);
DEFINE(WEB_SERVER_ROOT, $_SERVER['DOCUMENT_ROOT']);
DEFINE(APP_ROOT, __DIR__);
DEFINE(URI_BASE, str_replace(WEB_SERVER_ROOT, '', APP_ROOT);
if ($_SERVER['HTTPS'] == 'on') {
    DEFINE(PROTOCOL, 'http');
} else {
    DEFINE(PROTOCOL, 'https');
}
DEFINE(URL_BASE, PROTOCOL . '://' . URI_BASE);
对于includes,您可以执行以下操作:

include(APP_ROOT . '/modules/somefile.php');
<img src="<?php echo URL_BASE; ?>/images/someimage.jpg" />
<a href="<?php echo URL_BASE; ?>/somepage">Some Page</a>
<script type="text/javascript" src="<?php echo URL_BASE; ?>/js/somejs.js" />
对于输出图像、javascript、css等链接,您可以使用以下内容:

include(APP_ROOT . '/modules/somefile.php');
<img src="<?php echo URL_BASE; ?>/images/someimage.jpg" />
<a href="<?php echo URL_BASE; ?>/somepage">Some Page</a>
<script type="text/javascript" src="<?php echo URL_BASE; ?>/js/somejs.js" />

下面是一个基于Mike Brant解决方案的替代方案

//APP_ROOT and APP_BASE assumes that the current location of this 
//script is located in the root of your application.  
//Also assumes that the HOST_NAME is what you want in the URL.  
//See https://php.net/manual/en/reserved.variables.server.php for reference 
define('HOST_NAME', $_SERVER['HTTP_HOST']);
(empty($_SERVER['HTTPS'])) ? define('PROTOCOL', 'http') : define('PROTOCOL', 'https');
define('WEB_SERVER_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('APP_ROOT', __DIR__);
$appBase = str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', $_SERVER['SCRIPT_NAME']);
define('URL_BASE', PROTOCOL . '://' . HOST_NAME . $appBase);

下面是一个基于Mike Brant解决方案的替代方案

//APP_ROOT and APP_BASE assumes that the current location of this 
//script is located in the root of your application.  
//Also assumes that the HOST_NAME is what you want in the URL.  
//See https://php.net/manual/en/reserved.variables.server.php for reference 
define('HOST_NAME', $_SERVER['HTTP_HOST']);
(empty($_SERVER['HTTPS'])) ? define('PROTOCOL', 'http') : define('PROTOCOL', 'https');
define('WEB_SERVER_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('APP_ROOT', __DIR__);
$appBase = str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', $_SERVER['SCRIPT_NAME']);
define('URL_BASE', PROTOCOL . '://' . HOST_NAME . $appBase);

w3schools被认为是一个非常糟糕的资源已经有一段时间了,或者说是更好的资源。@dualed谢谢你的评论dualed,我已经更新了我的信息链接。w3schools被认为是一个非常糟糕的资源已经有一段时间了,或者说是更好的资源。@dualed谢谢你的评论dualed,我已经更新了我的信息链接。很抱歉脱离主题,但也许你需要比纯php更大的东西?也许换个框架?CodeIgniter是最简单、最容易使用的,我通过使用它节省了很多时间。很抱歉脱离主题,但也许你需要比纯php更大的东西?也许换个框架?CodeIgniter是最简单、最容易使用的,我通过使用它节省了很多时间。谢谢Mike,但我将更改并使用此常量创建img和锚?@mauriblint我已经添加了在链接中使用该常量的示例,或者在上面的回答中引用javascript。谢谢Mike,但是我会改变,用这个常量创建img和锚吗?@mauriblint我已经添加了在链接中使用这个常量的例子,或者在我上面的回答中引用javascript。