iT邦幫忙

0

PHP(CENTOS7+NGINX)中檔案路徑問題

頭痛了好幾天一直不得其門而入,只好上來求救一下:
我知道在PHP中檔案引入路徑是要用
include
include_once
require
require_once

或是在PHP.INI中設Paths and Directories
include_path
不過都沒有成功~

想請問~
在預設中PHP路徑是在/usr/share/nginx/html中的目錄RUN,可是我不想這樣
做,原因是一來怕程式一多管理會有問題.二來怕都在同一路徑易被駭.
如果我想要寫一支A.PHP放在去/usr/share/nginx/html底下再去呼叫/usr/share/nginx/html/AAA/TEST.PHP的話要如何寫?

或是我要如何去修改PHP.INI一開始就直接到/usr/share/nginx/html/AAA/中去執行我要的程式?
謝謝大家了~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
阿偉
iT邦新手 2 級 ‧ 2017-04-28 16:59:49
最佳解答

A.PHP去叫/usr/share/nginx/html/AAA底下的CODE. ???
應該是A.PHP開啟後應該轉址到,你想去的頁面吧?

header("Location: 位置")
exit();

5

1.呼叫不是採相對路徑就好了?有什麼問題?
2.如果你是一個伺服器多個目錄分屬不同的網站,那你就要稍微學一下VirtualHost的設定。
3.最好清楚明白不管是include或是require基本上都是讓你呼叫class、function或是自己寫的功能性模組,而不是用來載入片段程式碼的。
4.可能的話了解一下__autoload()之類的運作吧。有很多方法可以做到自動require。

看更多先前的回應...收起先前的回應...
foxmuder iT邦新手 5 級 ‧ 2017-04-22 16:49:42 檢舉

謝謝提點~絞盡腦汁一直苦思!用「相對路徑」就好了,PHP.INI暫時先別去改變,被另一個含式「絕對路徑」搞混了.

因為要測試一些功能想把原本TEST OK的PHP放在一特別目錄中不要去動到而已,也考慮用CLASS/FUBCTION來CALL就好,只是新手上路難免混混淆不清了。

foxmuder iT邦新手 5 級 ‧ 2017-04-22 20:23:55 檢舉

再請教一下:
如果再引入的檔案中再含有其呼叫他檔(比方JPG),要如何實現?
因為我引入第一個檔是OK的,只是圖檔變成饅頭了,我的圖檔都統一跟被引入檔放在同一資料匣中,不知道要如何是好.

為什麼引入的還要引入JPG?
還是說你引入的只是一個樣板?

foxmuder iT邦新手 5 級 ‧ 2017-04-23 11:42:16 檢舉

是從網路找到一個範例包某A專案的內建數個PHP/HTML/JPG檔.原本我通通放在(比方)/usr/share/nginx/html底下,RUN是都OK;

不過當我在練習其他的CODE時怕混淆了就把某A這些CODE移到/usr/share/nginx/html/AAA底下以便跟其他CODE區隔.

但這時我又想回頭試RUN某A的CODE,於是我就先在/usr/share/nginx/html底下建一個A.PHP去叫/usr/share/nginx/html/AAA底下的CODE.

發現是可以RUN不過圖檔叫不進來

run不進來不是應該也會有show error嗎?還是你把show error關掉了?

foxmuder iT邦新手 5 級 ‧ 2017-04-23 20:58:29 檢舉

沒有ERROR出現!不過圖檔就是出不來http://ithelp.ithome.com.tw/upload/images/20170423/20050591WogEA5os7z.jpg

那你有獨立在網頁上來看圖片顯示的路徑嗎?

foxmuder iT邦新手 5 級 ‧ 2017-04-24 19:37:14 檢舉

只看到檔案名~沒有出現路徑
http://ithelp.ithome.com.tw/upload/images/20170424/20050591dAXY1YA5h6.jpg

首先,你有這個圖片檔案嗎?
其次,這個圖片檔案路徑跟你這隻引入檔案在你的專案中的相對路徑為何?

foxmuder iT邦新手 5 級 ‧ 2017-04-24 22:35:11 檢舉

圖有,都在同一目錄下
http://ithelp.ithome.com.tw/upload/images/20170424/200505915U3XKz7bhZ.jpg

但是你如果引入的位置是相對於你現在的位置。
你的圖檔應該是要放在跟你原本的主體php檔同樣的位置吧。
你可能要想清楚一下路徑的東西。
是說如果像這種會被人家引用的php檔,裡頭的圖檔什麼的一般都是另外有存放空間,然後提供網址讀取吧。
內部處理的話就要注意路徑的問題。
而我指的是說,你在瀏覽器上有沒有在圖片上按右鍵看看他顯示的路徑到底是什麼?

foxmuder iT邦新手 5 級 ‧ 2017-04-25 19:12:18 檢舉

是內部處理,我查到它是直接抓我CENTOS的/usr/share/nginx/html/leondb底下圖檔,不過圖仍舊出不來,而一些PHP都跟圖檔同一位置

http://192.xxx.x.xxx/usr/share/nginx/html/leondb/member.jpg

/usr/share/nginx/html <== 到這裡為止能顯示得出來我就服了你了。

foxmuder iT邦新手 5 級 ‧ 2017-04-26 19:47:16 檢舉

SORRY~小的眼拙可否見告?

為什麼檔案系統層級的絕對路徑會出現在網址層級的相對路徑上???
而且這絕對路徑和相對路徑的問題不就是發生在一開始的時候?
還有你的問題已經超過72小時囉。
這代表什麼問題你知道嗎?
這代表…………你覺得我應該要告訴你答案?還是你自己想一想這代表什麼意思?
依照你的想法,恐怕最後會有不同的結果……
關鍵在於……你有多少想要進步的心思。

foxmuder iT邦新手 5 級 ‧ 2017-04-27 06:55:17 檢舉

SORRY~小的想必跑錯地方了,不該提出如此愚蠢的問題,浪費大家時間及論壇空間~
再次抱歉!
祝好~

這算是惱羞了嗎?
如果是,那我會告訴你:不管你跑到那,都是跑錯地方。
因為你根本就不該走寫程式這條路。

0
landraud
iT邦見習生 ‧ 2023-12-27 22:09:01

如果这样,我就会告诉你, space bar clicker 无论你去哪里,你都跑错了地方。

我要發表回答

立即登入回答