我想在PHP中使用Windows 7上的符號鏈接。我使用Apache 2.4.10和PHP 5.5.15從普通用戶帳戶(非管理員)運行XAMPP。正如Symlink is not working in my local machine中建議的那樣,我設置了正確的權限以供我的用戶創建符號鏈接。這工作正常,我可以在沒有提升的情況下從命令行創建符號鏈接(mklink ...
)。 PHP的symlink()
函數不會拋出任何權限(代碼1314)錯誤。如何使Windows符號鏈接與mod_php一起使用?
當命令行或通過CGI一切加載它運行PHP按預期工作:
symlink()
能夠創建符號鏈接(絕對和相對
目標路徑)is_link()
返回true符號鏈接filetype()
返回 '鏈接' 的符號鏈接
然而,當我運行PHP作爲Apache模塊,我遇到各種各樣的麻煩:
symlink()
只能夠創建符號鏈接,當目標是有效絕對路徑(使用相對路徑會拋出:Warning: symlink(): Could not fetch file information(error 2)
)is_link()
回報假符號鏈接filetype()
回報'文件'/ '目錄'符號鏈接
這似乎與PHP symlink() fails on Windows 7有關,但該錯誤在PHP 5.4中修復,而我使用的是5.5。另外PHP是報告錯誤代碼2,不3.
除了我的主要問題(「?如何使這項工作」),我在尋找答案,以下幾個問題:
這是PHP(或Apache?)中的另一個bug嗎?
將PHP作爲一個模塊加載並通過CGI與這種情況有什麼關係?
和閱讀thread safety in PHP後:
- 可以線程安全有什麼關係呢?
我可以告訴大家,mod_php,並且現在被加載線程安全版本( 「phpt5 TS .dll文件」)。
這裏是httpd的一部分。CONF裝載的模塊(默認XAMPP設置):
LoadFile "G:/xampp/php/php5ts.dll"
LoadFile "G:/xampp/php/libpq.dll"
LoadModule php5_module "G:/xampp/php/php5apache2_4.dll"
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
而這裏的PHP,CGI設置:
<FilesMatch "\.php$">
SetHandler application/x-httpd-php-cgi
</FilesMatch>
<IfModule actions_module>
Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
</IfModule>