我的项目的目录结构如下: -
/var/www/includes/
/var/www/classes/
/var/www/public/css/
/var/www/public/js/
/var/www/public/index.php
webroot为/var/www/public
,因此访问测试域localhost.dev
将为public
目录中的文件提供服务,因此将运行/var/www/public/index.php
。无需像localhost.dev/public/index.php
问题是当我在Netbeans中创建项目时,我必须设置索引文件,以便可以使用xdebug和Netbeans调试项目。
因此,在添加项目时,我提供了/var/www
作为项目源文件夹(Sources Folder
),includes
和classes
位于此文件夹中。在下一个项目配置屏幕(Choose Project > Name and Location > file path is taken as Run Configuration
)中,我被要求提供Project URL
和index file
。由于index.php
文件实际位于/var/www/public/
下,因此当我浏览文件并选择它时,索引页面的网址将被视为localhost.dev/public/index.php
,而不仅仅是localhost.dev/index.php
。这使我无法调试项目。
任何人都可以指出当所有源文件都不在web root中并且使用xdebug调试项目时如何向Netbeans添加项目。
答案 0 :(得分:0)
我认为将所有项目文件直接放在/var/www
中是一种不好的做法。
我认为在实际部署的项目中你永远不会看到这一点。所以我的第一个建议是改变你构建项目的方式。如果那是不可能的,在Netbeans中选择/var/www/public
作为Project文件夹。
如果Netbeans需要引用/var/www
中的文件夹,请在公开内容中创建指向/var/www
中的符号文件夹。
您拥有的最后一个资源是在Apache中创建重写规则,使localhost.dev/public
与localhost.dev
相同。您可以在Apache documentation中查找此内容。
答案 1 :(得分:0)
我有一个类似的设置,但有一个小的区别:我的设置使用本地开发服务器上的远程站点。在项目属性的“运行配置”窗口中,我将“运行方式”设置为“远程网站(FTP,SFTP)”。我不认为这会影响我的答案中的信息,但我提到它是为了以防万一。
转到项目属性的“Sources”窗口,找到“Web Root”条目,单击“Browse”并选择/var/www/public
目录。这应该导致xDebug使用localhost.dev/index.php。当您进入“运行配置”窗口并浏览索引文件时,您会注意到浏览窗口将以“公共”而不是“www”开头。
关于此类配置的一个重要说明让我感到非常沮丧。
使用xDebug时,您需要能够设置断点并使用Web根目录(公共)目录之外的文件。由于您已将网络根目录设为/var/www/public
,因此您无法使用/var/www/includes
或/var/www/classes
中的文件。
您需要做的是将网络根目录之外的文件添加到全局包含路径。
将目录添加到全局包含路径有两种方法,您使用的方法取决于您配置项目的方式。
在您的情况下,外部目录包含在您的项目中,因此您需要通过“选项”界面添加它们。转到工具 - >选项并选择“PHP”标签,然后将/var/www/includes
和/var/www/classes
文件夹添加到全局包含路径。
将文件添加到全局包含路径的另一种方法是用于位于项目源文件夹之外的文件。对于/var/folder_outside_www/
之类的目录,可以在项目属性中使用“PHP Include Path”窗口。
答案 2 :(得分:0)
我还没有找到更好的方法,但是我使用了这个步骤:
现在,当您启动调试过程时,Netbeans将显示指定网址弹出窗口,您可以将其从http://localhost.dev/public/index.php更改为http://localhost.dev/index.php
答案 3 :(得分:0)
将/ var / www / public设置为项目文件夹(包含netbeans项目文件夹),并在项目属性/ var / www / includes /和/ var / www / classes /中包含为全局包含目录。或者最好使用PHPStorm。