我遇到了Google App Engine和PHP realpath功能的问题。当我使用git部署时,realpath函数在访问wordpress css目录时不起作用,但在使用命令行sdk部署时确实有效。除了部署的版本之外,两个代码库都是相同的。我还验证了文件在git中是正确的,并且在直接访问它们时从项目控制台代码浏览器中可见。
我将此作为我的测试代码
<?php
print '<pre>';
$file = __FILE__;
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );
$file = __DIR__ . '/wordpress/wp-includes/';
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );
$file = __DIR__ . '/wordpress/wp-includes/css/';
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );
$file = __DIR__ . '/wordpress/wp-includes/css/dashicons.min.css';
$realpath = realpath( $file );
print 'File: ' . $file . "\n";
print 'Realpath: ' . $realpath . "\n";
var_dump( $realpath );
print '</pre>';
?>
当我访问git部署版本时,我看到:
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/test.php
Realpath: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/test.php
string(66) "/base/data/home/apps/s~peak-eon-630/wp.377596938324631222/test.php"
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes/
Realpath: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes
string(79) "/base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes"
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes/css/
Realpath:
bool(false)
File: /base/data/home/apps/s~peak-eon-630/wp.377596938324631222/wordpress/wp-includes/css/dashicons.min.css
Realpath:
bool(false)
当我访问命令行sdk部署版本时,我看到:
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/test.php
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/test.php
string(68) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/test.php"
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes
string(81) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes"
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css
string(85) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css"
File: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/dashicons.min.css
Realpath: /base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/dashicons.min.css
string(103) "/base/data/home/apps/s~peak-eon-630/test.377596986549195338/wordpress/wp-includes/css/dashicons.min.css"
我的app.yaml看起来像这样:
application: peak-eon-630
version: wp
runtime: php
api_version: 1
threadsafe: true
handlers:
- url: /(.*\.(htm|html|css|js))$
static_files: wordpress/\1
upload: wordpress/.*\.(htm|html|css|js)$
application_readable: true
- url: /wp-content/(.*\.(ico|jpg|png|gif|svg))$
static_files: wordpress/wp-content/\1
upload: wordpress/wp-content/.*\.(ico|jpg|png|gif|svg)$
application_readable: true
- url: /(.*\.(ico|jpg|png|gif))$
static_files: wordpress/\1
upload: wordpress/.*\.(ico|jpg|png|gif)$
application_readable: true
- url: /wp-admin/(.+)
script: wordpress/wp-admin/\1
secure: always
- url: /wp-admin/
script: wordpress/wp-admin/index.php
secure: always
- url: /wp-login.php
script: wordpress/wp-login.php
secure: always
- url: /wp-cron.php
script: wordpress/wp-cron.php
login: admin
- url: /xmlrpc.php
script: wordpress/xmlrpc.php
- url: /wp-(.+).php
script: wordpress/wp-\1.php
- url: /test.php
script: test.php
- url: /(.+)?/?
script: wordpress/index.php
skip_files:
- ^(.*/)?\.zip$
- ^(.*/)?\.bat$
- ^(.*/)?\.sh$
- ^(.*/)?\.md$
- ^(.*/)?node_modules/.*