此问题仍未解决
我正在关注的视频PHP教程正在构建一个名为initialize.php的文件,其中它使用PHP预定义的常量Directory_Separator,然后定义site_root。 site_root是用于PHP查找所需文件的绝对文件路径(不是Web服务器路径)。他给了我们以下代码
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT') ? null :
define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery');
我假设他的计算机上的文件路径是root / users / kevin / sites / photogallery
我不是在我的计算机上构建网站,而是直接在线。我不知道要插入什么文件路径。
正如他强调的那样,它不是网络服务器路径,而是文件系统路径,我应该把它放在哪里。只是像这样的域名。
define('SITE_ROOT', DS. 'www.example.com');
他不想要网络服务器路径,但文件位于网上?所以我不明白。
更新
视频教程使用以下代码
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT') ? null :
define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery');
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes');
我使用了这段代码:
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)));
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes');
我收到此错误消息
require_once(/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php): 无法打开流:没有这样的文件或 目录 /hsphere/local/home/c263430/quoralist.com/includes/initialize.php 第11行致命错误: require_once():打开失败 需要 '/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php' (include_path中= ':/ hsphere /共享/阿帕奇/的libexec / php5ext / PHP /') 在 /hsphere/local/home/c263430/quoralist.com/includes/initialize.php 在第11行
UPDATE 通过experimentX使用下面的3个编辑,以及以下
define('SITE_ROOT', DS.'hsphere'.DS.'local'.DS.'home'.DS.'c263430'.DS.'quoralist.com');
我总是收到错误消息
警告: require_once(LIB_PATH / config.php中): 无法打开流:没有这样的文件或 目录 /hsphere/local/home/c263430/quoralist.com/includes/initialize.php 第11行致命错误: require_once():打开失败 必需'LIB_PATH / config.php' (include_path中= ':/ hsphere /共享/阿帕奇/的libexec / php5ext / PHP /') 在 /hsphere/local/home/c263430/quoralist.com/includes/initialize.php 在第11行
另外,
答案 0 :(得分:10)
怎么样
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)));
echo SITE_ROOT;
而不是define('SITE_ROOT', 'www.domain.com')
你应该define('SITE_ROOT', realpath(dirname(__FILE__))
。
www.domain.com
是您网站的基本网址,而realpath(dirname(__FILE__))
是定义它的FILE的绝对文件路径。使用此路径,您可以为您的站点设置ROOT FOLDER。
例如:您无法unlink('www.example.com\img1.jpg')
删除img1
你应该unlink(SITE_ROOT.DS.'img1.jpg')
;
类似于move_uploaded_file
或任何其他目录或文件功能。即,您的文件正被服务器计算机移动和删除(因为php脚本在服务器中执行),因此需要绝对文件路径。
使用此绝对路径,您可以导航到该文件夹并访问服务器上的文件。
[UPDATE]
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT') ? null :
define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery');
虽然我没有Mac,但web-root
在Mac上为Users/kevin/Sites/
,而Users/kevin/Sites/photogallery
是网站根目录。
导师知道这一点,所以他这样做。但是当我们的项目在网络服务器上传时,我们可能不知道这一点,所以
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)));
最合适。
至于DS
,它只是一个CONSTANT(DIRECTORY_SEPARATOR
),它的定义是因为DIRECTORY_SEPARATOR
太长而无法编写。即。
SITE_ROOT'.DIRECTORY_SEPARATOR.'Users'.DIRECTORY_SEPARATOR.'kevin'.DIRECTORY_SEPARATOR.'Sites'.DIRECTORY_SEPARATOR.'photo_gallery'
因此,在定义SITE ROOT
之前定义它defined('DS')? null: define('DS', DIRECTORY_SEPARATOR);
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)));
由于教程已在MAC DIRECTORY_SEPARATOR
上完成/
。样本在localhost
上完成,导师知道他的网络服务器的绝对文件路径,所以他正在做
[错误:更新]
您收到此错误,因为在includes/initialize.php
上定义此错误会假定您的SITE_ROOT
yourwebroot/yourproject/includes
必须是yourwebroot/yourproject/includes
。
有两种方式,一种方式是
将initialize.php
放入yourwebroot/yourproject
另一种方式是
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS);
OR
defined('SITE_ROOT')? null: define('SITE_ROOT', DS.'..'.DS.realpath(dirname(__FILE__)));
(我不确定,但其中一个应该有用)
也试试这个
defined('SITE_ROOT')? null: define('SITE_ROOT', '/../'.realpath(dirname(__FILE__)));
答案 1 :(得分:1)
在photograph.php中,只需删除DS
即可public function image_path() {
return $this->upload_dir.$this->filename;
}
工作线是:
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS);
谢谢!