我有2台Mac,我希望保持同步的一般配置。对于Apache和PHP,我将conf文件(分别是httpd.conf和php.ini)存储在我的Dropbox(~/Dropbox/config
)中,并使用符号链接从预期位置引用共享。
同样,我以相同的方式分享了几个代码库。物理文件位于~/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
中的任何值并且工作得很漂亮。
答案 0 :(得分:1)
我也开发了几台机器(所有的mac),让我保持一切同步的最简单方法是git,dropbox和zend_config。
我有一个父git目录,/ git然后每个项目/git / projecta / git / projectb。这样你就不会处理$ HOME或〜/
的问题我所做的任何更改都会推送到Dropbox,并且它会在所有计算机上实时同步。
使用zend_config,我通常存储在/etc/projecta.ini中的每个项目都有一个配置文件。这将指向外部库,db params等。
就共享库而言,我尝试让每个项目都拥有所有依赖项。每个项目都是应用程序,html / public,library。而库文件夹将有pear,zend等推进。
就include_path问题而言,为什么不将它存储在所有机器的公共目录中。 / usr / local / lib / php用于所有库,然后将其符号链接到dropbox并对所有项目执行相同操作。然后在你的应用程序中将include_path设置为/ usr / local / lib / php或在php.ini中设置它。
答案 1 :(得分:1)
include_path
应该忽略不存在的目录。但除此之外,你可以做一个:
include_path
指令设置php_value
user_ini.filename
auto_prepend_file
包含一个脚本,该脚本将计算正确的包含路径,并在每个其他脚本之前使用set_include_path()
进行设置。