You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP浏览器SSH工具传PHP文件后网站无法运行,求解决方案

Troubleshooting: GCP Browser SSH File Transfer Breaks PHP Site (Works with cp Command)

Hey there! I’ve dealt with this exact scenario before, so let’s walk through the most likely issues and fixes step by step. The core problem here is that browser-based SSH file transfers often introduce subtle differences compared to local cp commands—here’s what to check:

1. Incorrect File Permissions/Ownership

Browser SSH tools sometimes retain Windows-style permissions or set the wrong user/group on transferred files. Apache (httpd) needs files in /var/www/html to be readable by the apache user or have universal read permissions.

  • First, check the permissions of your transferred PHP file:
    ls -l /var/www/html/your-php-file.php
    
  • Compare this to a file that works (copied via cp). You’ll likely see the working file is owned by apache:apache with permissions like 644.
  • Fix it with these commands:
    # Set correct owner/group
    chown apache:apache /var/www/html/your-php-file.php
    # Set proper read/write permissions
    chmod 644 /var/www/html/your-php-file.php
    # For an entire directory, use recursive flags
    chown -R apache:apache /var/www/html/
    chmod -R 644 /var/www/html/
    

2. SELinux Context Mismatch

CentOS 7 has SELinux enabled by default. When you transfer files via browser SSH, they might not inherit the correct SELinux context that Apache expects—whereas cp automatically copies the target directory’s context.

  • Check the SELinux context of your file:
    ls -Z /var/www/html/your-php-file.php
    
  • A valid context for web content should look like system_u:object_r:httpd_sys_content_t:s0. If yours is different, fix it:
    # Restore context for a single file
    restorecon -v /var/www/html/your-php-file.php
    # Restore context for the entire directory
    restorecon -Rv /var/www/html/
    

3. Windows Line Endings (CRLF vs LF)

PHP on Linux can throw errors if files use Windows-style CRLF line endings instead of Linux’s LF. When you transfer via browser, the line endings might stay as CRLF, but cp within Linux keeps LF formatting.

  • Check if your file has CRLF endings:
    file /var/www/html/your-php-file.php
    
  • If the output mentions CRLF line terminators, convert it to LF:
    # Install dos2unix if you don't have it
    yum install dos2unix -y
    # Convert the file
    dos2unix /var/www/html/your-php-file.php
    

4. Incomplete File Transfer

Browser-based transfers can sometimes fail silently, leaving you with a truncated or corrupted file. Local cp commands don’t have this issue since they’re copying directly on the server.

  • Verify file size: Compare the size of your original Windows file to the one on the server with:
    ls -lh /var/www/html/your-php-file.php
    
  • For a more precise check, use MD5 checksums: Calculate the MD5 of your local Windows file, then run this on the server to compare:
    md5sum /var/www/html/your-php-file.php
    

Start with checking permissions and SELinux—those are the most common culprits here. If those don’t fix it, move on to line endings and file integrity.

内容的提问来源于stack exchange,提问作者ddtrips deedeetrips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:03:17