我正在使用
function load($c) {
if (strpos($c, "Cyclos\\") >= 0) {
include str_replace("\\", "/", $c) . ".php";
}
}
spl_autoload_register("load");
它正确地在localhost上工作。但在将其上传到服务器后,它无法正常工作。我该如何解决?
答案 0 :(得分:0)
这里有两个错误:
strpos()
是一个区分大小写的函数,您应该使用stripos()
。同样适用于str_replace()
,您应该使用str_ireplace()
。但是,由于您只是在代码中替换反斜杠,因此在这种情况下不会产生影响。
strpos()
和stripos()
返回false
,(int) false == 0
,如果发生,则返回function load($c) {
if (stripos($c, "Cyclos\\") !== false) {
include str_replace("\\", "/", $c) . ".php";
}
}
spl_autoload_register("load");
。
试试这个:
public class PurchaseTestingActivity extends AppCompatActivtiy implements BillingProcessor.IBillingHandler {
........
purchaseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean isAvailable = BillingProcessor.isIabServiceAvailable(PrivateAndPublicCardHoldScreen.this);
if (isAvailable) {
BillingProcessor bp = new BillingProcessor(this, "YOUR LICENSE KEY FOR THIS APPLICATION", this);
/// this is the actually product
// bp.purchase(PrivateAndPublicCardHoldScreen.this, "upgrade_to_premium");
//// for testing purposes
bp.purchase(PrivateAndPublicCardHoldScreen.this, "android.test.purchased");
}else{
Toast.makeText(PrivateAndPublicCardHoldScreen.this, "Your device is not supported, please contact us.", Toast.LENGTH_LONG).show();
}
}
});
..........
@Override
public void onProductPurchased(String productId, TransactionDetails details) {
/// handle your app after purchases done
}
@Override
public void onPurchaseHistoryRestored() {
}
@Override
public void onBillingError(int errorCode, Throwable error) {
}
@Override
public void onBillingInitialized() {
}
}
然而,原因可能在不同的文件系统上有所不同,在localhost上你可能有一个不区分大小写的文件系统(例如NTFS),以及" cyclos.php"与" Cyclos.php"相同,而在具有EXT *文件系统的** nix系统上,文件名中的案例变体将起作用。