对常见部署问题进行故障排除
本部分提供了PhpStorm中部署常见问题的解决方案和变通方法列表。
收集 PhpStorm 部署日志
如果本节未解决您的问题,请联系我们的支持工程师。如果要求提供部署日志,请按照说明收集它们。
收集部署日志
选择
在主菜单中在打开的自定义调试日志配置对话框中,根据您遇到的问题添加以下行:
部署/同步问题:
#com.jetbrains.plugins.webDeployment
与 SSH/SFTP 相关的问题:
#com.intellij.ssh
单击确定并重现该问题。
找到日志文件。 (适用于 Windows 和 Linux)或 (适用于 macOS)。
如有必要,您可以手动查找日志:
- 句法
%HOMEPATH%\.<产品><版本>\system\log
- 例子
C:\Users\JohnS\.PhpStorm2021.3\system\log
- 句法
~/Library/Logs/<产品><版本>
- 例子
~/库/日志/PhpStorm2021.3
- 句法
~/.<产品><版本>/system/log
- 例子
~/.PhpStorm2021.3/system/log
最近的日志文件名为idea.log;旧文件名以数字结尾,即idea.log.1、idea.log.2等。在大多数情况下,您只需要最近的一个。
一般故障排除
部署缓慢或失败
部署可能是一项资源密集型操作,尤其是在项目或部署服务器包含大量目录和文件的情况下。在Settings/Preferences对话框 ( Ctrl+Alt+S) 中,导航到Build、Execution、Deployment并探索以下可以加快部署的配置选项:
从部署中排除不需要的目录(例如,图像)。这可以从部署:排除路径选项卡页面完成。
在选项页面上,清除覆盖最新文件以跳过上传不需要上传的文件。
根据服务器的不同,在高级 FTP 设置中切换主动和被动传输模式可能会有所帮助。这可以通过在服务器的部署:连接选项卡中切换被动模式来完成。
文件传输变得无响应
如果 PhpStorm 尝试通过IPv6解析IPv4主机,则可能会发生这种情况。默认情况下,PhpStorm 仅侦听传入的 IPv4 连接。要确保禁用 IPv6,请检查 PhpStorm JVM 选项:
选择
从主菜单在打开的.vmoptions文件中,确保该
-Djava.net.preferIPv4Stack=true
行存在。重新启动 PhpStorm。
否则,要启用 IPv6 支持,请删除该-Djava.net.preferIPv4Stack=true
行。在这种情况下,请确保将主机的 IPv6 条目添加到/etc/hosts文件中。
下载/上传操作不可用
由于缺少映射,下载/上传操作可能不可用。如果您要下载的文件或文件夹未在任何映射中配置,PhpStorm 将不会下载它。映射可以按照将项目文件夹映射到服务器上的文件夹和访问它们的 URL 地址中的描述进行配置。
对于某些操作,需要在“设置/首选项”对话框的“部署”页面上选择默认部署服务器。
部分文件夹未部署
未部署文件夹的常见原因是它们被明确排除。要解决此问题,请在远程主机工具窗口中右键单击给定文件夹,然后从上下文菜单中选择从排除项中删除路径。完成此操作后,将部署该文件夹。
这也可以从“设置/首选项”对话框 ( )的“部署”页面进行配置。打开服务器的排除路径选项卡并删除排除路径。请注意,应检查源文件夹和目标文件夹。也可以在“按名称排除项目”下的“选项”页面上按名称排除文件夹。Ctrl+Alt+S
在项目之间共享部署配置
部署服务器在 IDE 级别进行配置:它们可用于所有项目并且可以在它们之间共享。
请注意,只有名称和连接详细信息(在部署:连接选项卡选项卡上指定)在项目之间共享:映射和排除路径是项目特定的,必须单独配置。使用这种方法,连接详细信息只需输入一次,而映射和排除路径可以为每个项目配置,共享连接详细信息。当项目共享相同的部署服务器并使用相同的连接设置时,这可能很有用。如果项目之间的连接设置不同,则必须为每个项目单独配置它们。
如有必要,您可以通过选中Deployment: Connection 选项卡上的Visible only for this project复选框将服务器设置为在单个项目中可见。
IDE 设置不允许我配置映射
默认新项目设置用于配置新项目的默认设置,不影响当前打开的项目。要配置当前项目的设置,请使用Settings/Preferences对话框Ctrl+Alt+S。
同一文件夹中的子文件夹可以有不同的部署设置吗?可以将本地文件夹部署到多个位置吗?
上传文件夹和配置映射时,请注意以下事项:
您可以指定特定文件夹到部署服务器上不同路径的映射。这可以在服务器的部署:映射选项卡上进行配置。
您可以将特定文件夹和文件排除在上传/下载之外。这可以在“部署:服务器的排除路径”选项卡上进行配置。
您不能一次将相同的文件夹(或子文件夹)上传到不同的站点。需要为每一个创建单独的部署配置,并逐个上传到每个站点。
如果这是您想要做的,我们建议使用功能强大的工具自动化该过程。例如,Phing有一个可以从 PhpStorm 使用的FTP任务。在 PhpStorm 中,您可以使用Sync with Deployed...命令并为每次上传从可用的部署服务器中进行选择。
我无法为 Sync With Deployed to My Server 菜单项分配键盘快捷键
无法将键盘快捷键直接分配给Sync With Deployed to <server name>命令,只能分配给通用Sync with Deployed to...命令,然后会显示一个带有服务器列表的弹出菜单。有关详细信息,请参阅配置键盘快捷键。
如果您确实希望为特定部署服务器分配键盘快捷键,则可以录制宏并为其分配快捷键:
选择
并开始录制宏。选择
<server name> 并关闭同步窗口。停止录制宏 从主菜单
设置宏名称,例如Sync with <server name>。
在Settings/Preferences对话框 ( Ctrl+Alt+S) 中打开,选择Keymap并找到Macros节点。从刚刚录制的新同步宏的上下文菜单中,选择添加键盘快捷键并提供所需的快捷键。
如何使用 PhpStorm 部署数据库?
使用 PhpStorm 部署数据库有两种方法:
利用集成的数据库工具并手动运行所需的 DDL 和 SQL 语句。
我可以在上传之前对我的文件运行脚本或可执行文件吗?
诸如缩小 CSS 、优化图像、使用IonCube编码 PHP 文件等是您可能希望在上传发生之前执行的操作。执行此操作的最佳方法不是在开始上传时运行它们,而是在文件更改时使用PhpStorm中的文件观察器运行它们。当需要将它们上传到部署服务器时,请改为上传处理过的文件。
请注意,必须清除“选项”页面上的“跳过外部更改”复选框才能使其正常工作。
有时文件不会自动上传
默认情况下,如果文件被某些外部进程(VCS、转译器等)更改,PhpStorm 会上传文件。如果未上传文件,请确保选项页面上的自动上传更改的文件到默认服务器设置为始终,并清除跳过外部更改复选框。
我可以运行部署前和部署后操作吗?
可以使用运行/调试配置。您可以创建一个假的运行/调试配置,或者应该是最后一步的运行/调试配置,然后在启动前添加所需的步骤。
作为替代方案,我们建议使用Phing或任何其他构建系统来执行复杂的步骤序列。
FTP 疑难解答
FTP 问题:无效的后代文件名“http:”
配置部署服务器或使用项目设置中的测试连接按钮时,将显示Invalid descendent file name "http:"错误。请注意,名称中所有带有冒号:的文件名都将被视为无效。
如果项目中存在名称中包含http:的文件,则会发生这种情况。PhpStorm 用于连接 FTP(Apache Commons VFS)的库无法读取包含此类文件的文件夹的内容,从而导致操作失败。唯一的解决方案是从项目中删除名称中包含http:的文件。
PhpStorm 似乎连接到服务器但无法列出文件或执行上传
这可能是因为部署服务器需要所谓的被动 FTP 连接。要设置此模式,请在所选服务器的部署:连接选项卡中选中被动模式复选框。
使用 Git checkout 更改分支时部署文件
使用 Git checkout 在分支之间切换时,有几种方法可以部署文件:
FTPS 故障排除
PhpStorm 无法与 FTPS 服务器建立连接
如果 FTPS 服务器配置为使用 TLS 1.0 / TLS 1.1,则 PhpStorm 无法连接到它并显示以下错误消息:
这是因为 PhpStorm 支持通过 TLS 1.2 及更高版本连接到服务器。不支持使用 TLS 1.0 和 TLS 1.1,因为这些协议已被弃用并被视为不安全。
作为一种解决方法,您可以通过调整 PhpStorm JVM 选项来启用 TLS 1.0 / TLS 1.1 支持。请注意,使用过时的协议可能并且将会给您的环境带来安全风险,并将其视为最后的选择。
使用以下内容创建文件custom.java.security :
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \包括jdk.disabled.namedCurves选择
从主菜单在打开的.vmoptions文件中,添加以下行:
-Djava.security.properties=${PATH_TO_CREATED_FILE}/custom.java.security替换
{PATH_TO_CREATED_FILE}
为创建的custom.java.security文件的路径。重新启动 PhpStorm。