我有2個Mac,其通用配置要保持同步。對於Apache和PHP,我將配置文件(分別爲httpd.conf和php.ini)存儲在我的Dropbox(~/Dropbox/config
)中,並使用符號鏈接從預期位置引用共享。在共享php.ini文件中設置include_path
同樣,我以同樣的方式分享幾個代碼庫。物理文件位於~/Dropbox/Development
中,並鏈接到~/Development/
。現在我需要共享一個實用程序類庫,我無法弄清楚如何做到這一點。問題在於每個播放目錄都位於我的主目錄中,而且我的用戶名在每臺機器上都不相同。一方面是~/rwilkerson
,另一方面是~/rob
。
我該如何讓我的php.ini來解決這個問題?在我的httpd.conf中,我使用了環境變量。例如,在虛擬主機配置文件中,我可以將我的web根目錄設置爲/Users/${SUDO_USER}/path/to/webroot
。由於我使用sudo重新啓動Apache(sudo apachectl restart
),因此環境變量會在我所在的任何一臺機器上評估爲正確的用戶名。
據我所知,我不能以類似的方式在我的php.ini中使用變量。我認爲如果我簡單地將兩條路徑都包含在我的include_path
中,PHP會忽略給定機器上不存在的路徑,但似乎並非如此。我的共享庫將只包含在正確的路徑之前不正確的路徑。
我找不到任何說明include_path
指令如何工作的細微差別的資源,所以我無法找到任何解決此明顯限制的方法。有人有主意嗎?
答:
我結束了使用StasM的解決方案#1以下。在我的httpd.conf文件(也共享),我說:
php_value include_path "/opt/local/lib/php:${HOME}/Dropbox/Development/lib/php/classes"
這樣做是壓倒在php.ini
任何價值和優美的工作。
我認爲'include_path'會忽略不存在的目錄,但似乎並非如此。但是,既然你已經證實,我會做一些進一步的測試。也許我只是沒有做足夠深入的檢查。儘管如此,'httpd.conf'的想法是一個很好的想法。不知道爲什麼我沒有想到這一點,但有沒有辦法讓'php_value include_path' _append_包含路徑而不是覆蓋它? – 2009-12-14 12:28:19
是的,那似乎不起作用。如果我在'include_path'中的'/ Users/rob/Dropbox/dev/lib/php/classes'之前有'/ Users/rwilkerson/Dropbox/dev/lib/php/classes'(在主目錄爲'/Users/rob',這些類不加載,如果我切換順序,他們的確如此。 – 2009-12-14 12:51:56
這看起來像一個錯誤,也許你想提交問題並複製到bugs.php.net? – StasM 2009-12-19 00:34:42