Questions tagged «php»

PHP是一种广泛使用的高级动态,面向对象和解释性脚本语言,主要用于服务器端Web开发。用于有关PHP语言的问题。

2
在nginx位置重写前缀url
我的nginx配置文件是这样的: server { listen 80; listen 443 ssl; server_name XXX.com; error_log /log/nginx/xxx.com_error.log; access_log /log/nginx/xxx.com_access.log main; root /data/www/; index index.php index.html index.htm; location ~ \.php$ { add_header X-Frame-Options SAMEORIGIN; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 我们需要配置nginx以满足以下要求: 1,如果URL 没有前缀“ /api/mobile/index.php”,并且请求的端口是80,则将其重定向到https 2,如果URL 具有前缀“ /api/mobile/index.php”,请继续 因此,我在配置文件中添加了内容: location ~ ^(?!/api/mobile/index\.php).*$ { if …
10 php  nginx 

4
如何使用PHP打印此模式?
如何打印此图案? $number = 5; for ($i=1; $i <= $number ; $i++) { for ($j=$i; $j >= 1;$j--){ echo "0"; } echo "\n"; } 版画 0 00 000 0000 00000 我已经尝试过了,但是我很困惑打印星号和零字符 for ($i=1; $i <= $number ; $i++) { $sum = 0; for ($j=$i; $j >= 1;$j--){ $sum +=$j; } echo …
10 php 

4
Woocommerce:检测单击“添加到购物车”按钮的位置并运行其他代码
在电子商务商店中: 主页上显示了一些项目,每个项目下方都有一个“添加到购物车”按钮。单击此按钮后,该项目即被添加到购物车。如果再次单击此按钮,则购物车中已经存在的物料数量将增加1。我相信这是循环。到目前为止,一切都很好。 在“单一产品”页面上,有一个“添加到购物车”按钮。单击此按钮后,该项目将添加到购物车。还有一个“数量”输入文本框,可用于更改数量。也可以 问题: 我需要区分在循环中单击的“添加到购物车”按钮(当前在主页上,但也可以在其他页面上使用,例如“存档”页面等)与单击的“添加到购物车”按钮之间在“单一产品”页面上。基于这种差异,这是我需要做的: 如果单击了循环中出现的“添加到购物车”按钮,请使用来获取购物车中已经存在的此项目的数量,将其 $cart_item_key递增1,然后将其发送到自定义函数,该函数将进行其他处理并保存详细信息重新购物。 如果单击了“单个产品”页面中出现的“添加到购物车”按钮,请使用抓住购物车中已经存在的该商品 的数量$cart_item_key,将其乘以3,然后将其发送到自定义函数,该函数将进行其他处理并保存详细信息再次放入购物车。 在上述两种情况下,都会根据不同的逻辑更改“数量”,并且需要将该“数量”发送到自定义函数调用。 我尝试过的是: 我尝试了以下代码: add_action('woocommerce_add_to_cart', 'custom_action_add_to_cart', 20, 6); function custom_action_add_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) { $cart = WC()->cart->get_cart(); $product = wc_get_product($product_id); // NEED TO RUN CUSTOM CODE HERE BASED ON THE CHECKS if (add to cart within loop is clicked) { …

2
为什么在引入属性类型提示时突然出现“初始化前不能访问类型化属性”错误?
我已经更新了类定义,以利用新引入的属性类型提示,如下所示: class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } public function getId(): int { return $this->id; } public function getVal(): ?string { return $this->val; } public function getCreatedAt(): ?DateTimeInterface { return $this->createdAt; } public …

1
现在不建议使用copydb,如何使用PHP复制MongoDB数据库
在MongoDB 4.2版copydb及其copyDatabase包装器中,已弃用。MongoDB手册建议我们现在应该使用mongodump和mongorestore。但是我是使用PHP MongoDB驱动程序从PHP调用copy命令的,而dump和restore命令是需要从命令行运行的命令,并且没有任何等效的PHP。现在如何使用PHP复制数据库?
10 php  mongodb 

7
file_get_contents得到错误的结果
更新资料 我解决了问题并发布了答案。但是,我的解决方案并非100%理想。我宁愿只symlink从cachewith clearstatcache(true, $target)或中删除clearstatcache(true, $link)但那不起作用。 我还宁愿首先避免对符号链接进行缓存,也可以在生成符号链接后立即将其从缓存中删除。不幸的是,我没有运气。由于某些原因clearstatcache(true),创建符号链接后无法正常工作,但仍会对其进行缓存。 我会很高兴地将悬赏奖励给任何能够改善我的答案并解决这些问题的人。 编辑 我试图通过每次clearstatcache运行时生成一个文件来优化我的代码,因此我只需要为每个符号链接清除一次缓存。由于某些原因,这不起作用。clearstatcache每次symlink在路径中包含a时都需要调用它,但是为什么呢?必须有一种方法可以优化我拥有的解决方案。 我使用PHP 7.3.5带nginx/1.16.0。有时file_get_contents在使用时会返回错误的值symlink。问题是删除并重新创建符号链接后,其旧值保留在缓存中。有时返回正确的值,有时返回旧值。它似乎是随机的。 我试图用以下方法清除缓存或防止缓存: function symlink1($target, $link) { realpath_cache_size(0); symlink($target, $link); //clearstatcache(true); } 我并不是真的想要禁用缓存,但是我仍然需要100%的file_get_contents精度。 编辑 我无法发布我的源代码,因为它太长和太复杂了,所以我创建了一个最小的,可重现的示例(index.php),该示例再次出现了问题: <h1>Symlink Problem</h1> <?php $dir = getcwd(); if (isset($_POST['clear-all'])) { $nos = array_values(array_diff(scandir($dir.'/nos'), array('..', '.'))); foreach ($nos as $no) { unlink($dir.'/nos/'.$no.'/id.txt'); rmdir($dir.'/nos/'.$no); } foreach (array_values(array_diff(scandir($dir.'/ids'), array('..', '.'))) …

3
ArrayObject不适用于PHP 7.4中的end()
在迁移到PHP 7.4时,我必须处理某些数组函数(例如reset(),current()或end()涉及ArrayObject)的不同行为。以下示例产生不同的输出: <?php $array = new \ArrayObject(["a", "b"]); $item = end($array); var_dump($item); $array = ["a", "b"]; $item = end($array); var_dump($item); 使用php 7.4的输出是: bool(false) string(1) "b" 在7.4之前的PHP版本上,输出如下: string(1) "b" string(1) "b" A end($array->getArrayCopy())会发出通知,但如果与变量一起使用,可能会变通。 有没有办法模仿的行为end()与一个ArrayObject或ArrayIterator?ArrayObject可能非常大,到最后的迭代可能不是最佳解决方案。
9 php  php-7.4 

8
查找人口最多的年份(最有效的解决方案)
给定两个数组;$births包含表明某人出生的出生年份列表,以及$deaths表明某人死亡的死亡年份列表,我们如何找到人口最高的年份? 例如,给定以下数组: $births = [1984, 1981, 1984, 1991, 1996]; $deaths = [1991, 1984]; 人口最高的年份应该是1996,因为3那一年人们还活着,这是所有年份中人口最高的年份。 这是运行的数学公式: | 出生| 死亡 人口| | ------- | ------- | ------------ || | 1981年| | 1 | | 1984年| | 2 | | 1984年| 1984年| 2 | | 1991年| 1991年| 2 | | 1996 | | …

5
大量在后台进程中抛出RejectionException而不是ConnectionException
我有在多个队列工作器上运行的作业,其中包含一些使用Guzzle的HTTP请求。但是,GuzzleHttp\Exception\RequestException当我在后台进程中运行这些作业时,该作业中的try-catch块似乎没有出现。正在运行的进程是php artisan queue:workLaravel队列系统工作程序,它监视队列并提取作业。 相反,抛出的异常是以下GuzzleHttp\Promise\RejectionException消息之一: 该承诺因以下原因而被拒绝:cURL错误28:在接收到0个字节的30001毫秒后操作超时(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html) 这实际上是伪装的GuzzleHttp\Exception\ConnectException(请参阅https://github.com/guzzle/promises/blob/master/src/RejectionException.php#L22),因为如果我在通过访问URL,我确实收到了ConnectException如下消息: cURL错误28:100毫秒后操作超时,收到0个字节中的0个(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html) 触发此超时的示例代码: try { $c = new \GuzzleHttp\Client([ 'timeout' => 0.1 ]); $response = (string) $c->get('https://example.com')->getBody(); } catch(GuzzleHttp\Exception\RequestException $e) { // This occasionally gets catched when a ConnectException (child) is thrown, // but it doesnt happen with RejectionException because it is not …

3
刷新时使AJAX分页与(AJAX)URL过滤器参数一起使用
我有一个定义明确的AJAX过滤器,分为两部分,一部分用于加载更多按钮,另一部分用于选择下拉过滤器。两者都在AJAX中重新加载前端的属性列表,并且一起工作(例如,如果我选择“最低价格”,“最高价格”和“下拉列表中的床位数”,则列表将刷新,并且“加载更多”按钮将正常工作) 。 相同的过滤器也可用于URL参数。因此,例如,如果URL为: mydomain.com/?min_price=100000&max_price=5000000&beds=3&page=3 它将按那些参数进行过滤。它甚至可以显示3页的属性。这非常好,包括初始负载。但是,如果直接加载URL,则它不适用于分页。如果我直接在浏览器中输入上述URL并加载,初始结果是正确的,但是在单击“加载更多”按钮时,它会将page = 3更改为page = 4(正确),但是它附加了未过滤完成的属性的第二页,并继续这样做-而不是进行过滤分页。 我究竟做错了什么? 这是我的代码(很抱歉!) JS: jQuery(function($){ // AJAX Stuff for filters + load more button /* * Load More */ $('#prop_loadmore').click(function(){ $.ajax({ url : prop_loadmore_params.ajaxurl, data : { 'action': 'loadmorebutton', 'query': prop_loadmore_params.posts, // loop parameters passed by wp_localize_script() 'page' : prop_loadmore_params.current_page, // Get …
9 php  jquery  ajax  wordpress 

1
PhpStorm:不建议使用类名进行调用
当我尝试在PhpStorm中运行测试时,我看到以下内容: Sebastian Bergmann和贡献者的PHPUnit 8.5.2。 警告:不建议使用类名进行调用 PhpStorm如何处理PHPUnit自动加载器脚本并期望其文件名与test相同,这可能是一个问题。 有任何转机吗?

3
无法在Windows Server 2016中的WordPress中创建目录wp-content
我无法使用Wordpress管理面板中的媒体工具将图像上传到我的Wordpress网站。我收到以下错误。 “ logo512x512.png”上传失败。无法创建目录wp-content / uploads / 2020/01。服务器的父目录是否可写? 我已经通过了大量的解决方案来解决这个问题,但是没有人为我工作。我在Windows 2016服务器计算机中。与MySQL数据库。我没有PhP管理员,没有Cpanel。 我的ftp正在工作。我能够毫无问题地获得主题和插件。有任何想法吗?

2
如何允许人们将我的Facebook应用程序订阅到他们的信息页?
我有一个可用于某些企业的Facebook应用程序。我可以创建一个网站,让客户可以通过Facebook登录,选择他们的页面,然后将其与具有某些订阅权限的我的应用程序连接起来,而不是手动连接我的应用程序和他们的页面?我什至从哪里开始?我在https://developers.facebook.com/上找不到更多信息 基本上,我只是为了自己的服务而尝试具有类似于manychat.com的功能。

5
Laravel工匠route:缓存导致错误的数据异常
运行命令:php artisan route:cache产生以下执行: Erroneous data format for unserializing 'Symfony\Component\Routing\CompiledRoute' 运行:php artisan route:clear修复它 我想知道如何解决此问题,以便可以缓存路线。
9 php  laravel 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.