我正在尋找一種方法來使用PHP腳本來控制對Apache資源的訪問。我想擁有不依賴於目標資源的訪問控制;即它可以用於html,文件,其他腳本和cgi程序,就像「允許來自」或「拒絕來自」指令將會這樣 - 除了使用自定義邏輯。如何在Apache中使用PHP腳本進行訪問控制
我看了幾種方法可以嘗試管理這樣的:
- 使用像mod_auth_script Apache模塊(確定,但這個模塊是舊的,我以爲不能很好地擴展)
- 使用FastCGI的指令FastCgiAccessChecker
- 創建我自己的Apache模塊調用PHP和做任何我需要
這些#2看上去最有希望的,也是最便攜給出FastCG的普及一世。 因此,我設法換出了通常的linux php模塊,並通過fastcgi代替了php。這是比在Windows困難,但得到它作爲一個外部服務器到山前必有路,即使用Apache指令
FastCGIExternalServer /var/www/html/thing -host 192.168.0.11:9000
並啓動PHP守護
php-cgi -q -b 192.168.0.11:9000 &
麻煩就來了,試圖找到一種使用FastCgiAccessChecker調用PHP腳本的方法。
我試過各種方法嘗試通過更改FastCGIExternalServer和/或FastCgiAccessChecker指令中的文件名來運行腳本名稱 - 不起作用。 我也試着開始的php-cgi的一個腳本說明符,即
php-cgi -q -b 192.168.0.11:9000 -f /var/www/html/thing/access.php &
沒有什麼工作。我可以告訴Apache識別我的指令,因爲當我包含FastCgiAccessChecker,然後訪問一個PHP頁面,內容類型更改爲文本/純文本,並且如果它是腳本,我將丟失頁面中第一個〜8000字節的內容。想法爲什麼)。但它不會調用我想運行的PHP腳本。
據我所知,發生的事情是FastCgiAccessChecker認爲指定的fastcgi服務器是專門編譯爲訪問檢查程序的。沒有辦法告訴fastcgi服務器(在我的情況下是PHP)執行訪問檢查的腳本。
我搜索了網頁,並據我所知,沒有人曾經嘗試過使用PHP腳本,或者沒有人寫過關於它的文章。
所以我的問題:我該怎麼做? 我可以看到幾種可能性:
1)我失去了一些東西,有一些神奇的方式讓FastCgiAccessChecker做我想做的:運行PHP腳本來控制Apache訪問控制
2)我寫的我自己的FastCGI服務器在c中並嵌入了PHP,所以我可以指定我想運行的PHP腳本(我花了幾分鐘的時間查看這個;它看起來很複雜和可怕,而且我從1995年開始就沒有在c中工作)
3)我放棄了FastCGI並編寫了一個apache模塊來直接調用我的PHP腳本來控制訪問。 (也看起來很複雜;而且這種技術需要爲執行PHP的每個請求產生一個新的進程。)
有沒有人有任何建議,要麼就如何讓FastCGI做我想做的事情,要麼)FastCGI的簡單替代方案?
謝謝任何你可以建議
我喜歡這個解決方案! – Achronos