5

この問題はまだ解決されていません

私がフォローしているビデオ 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 であると想定しています

私は自分のコンピューターでサイトを構築するのではなく、直接オンラインで構築しています。代わりに挿入するファイルパスがわかりません。

Web サーバーのパスではなく、ファイル システムのパスであると彼が強調したように、代わりに何を入力すればよいでしょうか。このようにドメイン名だけ。

define('SITE_ROOT', DS. 'www.example.com');

彼は Web サーバーのパスを望んでいませんが、ファイルはオンラインにありますか? だからわからない。

アップデート

ビデオチュートリアルでは、次のコードを使用しました

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/ にそのようなファイルやディレクトリはありません11 行目の initialize.php 致命的なエラー: require_once(): 必要な '/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php' を開くことができませんでした (include_path='.:/hsphere/shared/apache /libexec/php5ext/php/') /hsphere/local/home/c263430/quoralist.com/includes/initialize.php の 11 行目

以下の 3 つの編集を使用して、experimentX と次のように更新します。

define('SITE_ROOT', DS.'hsphere'.DS.'local'.DS.'home'.DS.'c263430'.DS.'quoralist.com');

私はいつもエラーメッセージを受け取りました

警告: require_once(LIB_PATH/config.php): ストリームを開くことができませんでした: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php 行 11 致命的なエラー: require_once(): /hsphere/local/home/c263430/quoralist.com/includes/initialize.php で必要な 'LIB_PATH/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') を開くことができませんでした11行目

また、

4

2 に答える 2

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は (サイトの) ベース URLrealpath(dirname(__FILE__))で、 は定義されている FILE の絶対ファイル パスです。このパスを使用して、サイトの ROOT FOLDER を設定できます。

unlink('www.example.com\img1.jpg')例:削除することはできませんimg1

あなたがするべきですunlink(SITE_ROOT.DS.'img1.jpg');

move_uploaded_fileまたは他のディレクトリまたはファイル機能についても同様です。つまり、ファイルはサーバーコンピューターによって移動および削除されているため (php スクリプトがサーバーで実行されるため)、絶対ファイルパスが必要です。

この絶対パスを使用して、フォルダーに移動し、サーバー上のファイルにアクセスできます。

[アップデート]

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-rootUsers/kevin/Sites/、Mac 上に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ます。チューターは自分の Web サーバーの絶対ファイル パスを知っているので、実行しています。

[エラー: 更新]

このエラーが発生したのは、これを on に定義するincludes/initialize.phpと、あなたSITE_ROOTyourwebroot/yourproject/includesあったはずの場所にあると想定されるためyourwebroot/yourproject/includesです。

2つの方法があり、1つの方法は

入れるinitialize.php_yourwebroot/yourproject

そしてもう一つの方法は

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS);

また

defined('SITE_ROOT')? null: define('SITE_ROOT', DS.'..'.DS.realpath(dirname(__FILE__)));

(よくわかりませんが、そのうちの1つが機能するはずです)

これも試してみてください

defined('SITE_ROOT')? null: define('SITE_ROOT', '/../'.realpath(dirname(__FILE__)));
于 2011-03-06T07:17:41.060 に答える
1

申し訳ありませんが、私は画像が表示されないことに対する答えを持っています

photo.php で、DS を削除するだけです

public function image_path() {
  return $this->upload_dir.$this->filename;
}

作業ラインは次のとおりです。

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS);

ありがとう!

于 2013-05-03T06:58:26.910 に答える